2011-06-14 4 views
4

큰 프로그램의 일부로 16 진수 파일에서 값을 읽고 10 진수 값을 인쇄해야합니다. 잘 작동하는 것 같습니다. 그러나 80에서 9f까지의 모든 16 진수 값은 잘못된 값을 제공합니다. 예를 들어 80hex는 8364의 십진수 값을 제공합니다. 도와주세요. Java 읽기 16 진수 파일

내 코드입니다 :

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])+" "); 
+1

그냥 용어에 대한 : 당신은 (? ASCII로 코딩 진수 데이터를 포함하는 파일이 될 것이다)는 ** 진수 파일 **를 읽고,하지만하지 않습니다 ** 바이너리 파일 **. –

답변

7

이 당신이 무엇을하고 있는지없는 생의 바이트를 읽으려고한다면.

문자를 읽는 Reader를 사용하고 있습니다 (지정하지 않은 인코딩에서 기본값은 UTF-8이 될 수 있습니다).

바이트를 읽으려면 InputStream을 사용하고 Reader에서 랩핑하지 마십시오.

+0

감사합니다. InputStream과 함께 작동합니다. –

+1

기본 인코딩은 Microsoft 코드 페이지 일 수 있습니다. 그 중 일부는 코드 포인트 0x80에 € 사인이있어서 유니 코드 8364에 매핑됩니다. – jarnbjo

0

또한 다른 인코딩을 사용할 수 있습니다 :

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