Zapis do pliku wartości hex

0

Witam,

Mam problem z zapisem wartości heksadecymalnej, zapisuje w takiej postaci:

fo.write(Integer.toHexString(255));

a edytując plik, wartość jaka tam sie zapisuje to 66

W czym leży problem?

0

do bmp

0

chce recznie wygenerowac biały piksel. Edytując plik za pomocą hexedytora , podmieniając wartości 66 na ff , normalnie piksel jest biały, a tak jest granatowy

0

Rozszerzenie pliku nie ma tutaj nic do rzeczy. Zapisujesz informacje do pliku w trybie binarnym czy tekstowym? Jakim edytorem otwierasz plik?
Przykład, który podałeś jest faktycznym elementem kodu 1:1, czy tylko obrazuje to co chcesz zrobić?

0

No niestety wydaje mi się że w tym przypadku będziesz się musiał trochę bardziej wysilić i wysyłać jednak obiekt typu byte a nie typu string, ale nie jestem pewien, spróbuj :)

0

Zapisuje przez PrintWritera:
PrintWriter fo = new PrintWriter("image.bmp");

1

Spróbuj przy pomocy BinaryWriter.

0

zawartość pliku wygląda tak, że pojawia się tam te ff, ale w źródle jest 66, a właśnie chodzi mi o to aby ff było kodzie pliku

0
renault12 napisał(a):

chodzi mi o to aby ff było kodzie pliku

To znaczy? Szczerze powiem, że się pogubiłem. Piksel jest biały czy granatowy? W kodzie to znaczy gdzie? Jak otworzysz przez notatnik, w hexedytorze czy jak wczytujesz plik w aplikacji?

0

Budowa białego piksela w bmp 24 bitowej wygląda tak:
FF FF FF, a naprzykład czerwonego tak: 00 00 FF

Teraz zapisuje do pliku w ten sposób:

            color[0] = (byte) (255 & 0xFF);
            color[1] = (byte) ((255 >> 8) & 0xFF);
            color[2] = (byte) ((255 >>  16) & 0xFF);
fo.write(color); 

W edytorze hex pliku wychodzi: c3 bf 00
a otwierając go przez notatnik są krzaczki

0

Szczerze powiem, że już nie wiem co to może być, jeszcze zaproponuję Tobie użycie ImageIO.

1 użytkowników online, w tym zalogowanych: 0, gości: 1