Java를 사용하는 형식을 합리적으로 잘 수행 한 dat 파일에 로그 (일종의)를 쓰는 프로그램에서 이진 파일을 읽으려고합니다. 나는 그래서 그것을로드 오전 :바이너리 파일에서 자바가 아닌 원시 코드를 읽으려고 시도합니다.
DataInputStream in = new DataInputStream(new FileInputStream("file.dat"));
System.out.println("Bytes skipped: " + in.skipBytes(4));
System.out.println(in.readLong());
문제는 readLong()의 값입니다 것은 내가 기대하고 무엇을 다른 16 진수 워크샵에서 나는 육각 블록
BF02 0000
및 보고서를 강조 그것은 그 유효한 서명 된 짧은/긴 숫자입니다 - 그러나 출력은 내가 기대하는 것과 매우 다릅니다. 자바 문서를 살펴보면, 64 비트 (8 바이트)로 분류되는 반면, 다른 소스는 부호있는 긴 정수가 32 비트 여야한다는 것을 보여줍니다.이 문제를 해결할 방법이 있습니까?
건배, 자바
톰
또는 정수입니다.reverseBytes(), Long.reverseBytes(). 적어도 그들은 형식을 정하는 사람들입니다. – akarnokd