Чтение в шестнадцатеричном файле - PullRequest
4 голосов
/ 14 июня 2011

В рамках более крупной программы мне нужно прочитать значения из шестнадцатеричного файла и распечатать десятичные значения. Кажется, работает нормально; Однако все шестнадцатеричные значения от 80 до 9f дают неправильные значения. например, 80 hex дает десятичное значение 8364 Пожалуйста, помогите.

это мой код:

String filename = "pidno5.txt";
FileInputStream ist = new FileInputStream("sb3os2tm1r01897.032");       
BufferedReader istream = new BufferedReader(new InputStreamReader(ist));
int b[]=new int[160];       
for(int i=0;i<160;i++)
    b[i]=istream.read();
for(int i=0;i<160;i++)
    System.out.print((b[i])+" ");

Ответы [ 2 ]

7 голосов
/ 14 июня 2011

Если вы пытались читать необработанные байты, это не то, что вы делаете.

Вы используете Reader, который читает символы (в кодировке, которую вы не указали, поэтому он по умолчанию что-то, возможно, UTF-8).

Для чтения байтов используйте InputStream (и не переносите его в Reader).

0 голосов
/ 05 августа 2012

Вы также можете использовать другую кодировку:

BufferedReader istream = new BufferedReader(new InputStreamReader(ist, "ISO-8859-15"));
...