파일의 바이트는 다음과 같습니다. AA37 D608 DFBF CB01.
왼쪽 열에 이것이 64 비트 정수 129407978957060010으로 해석된다는 것을 알 수 있습니다. 다시 16 진수로 변환하면 숫자가 "little-endian"형식으로 저장됩니다. 01CB BFDF 08D6 37AA.
그래서 당신이해야 할 것입니다 :
byte[] data = new byte[] { (byte) 0xAA, (byte) 0x37, (byte) 0xD6,
(byte) 0x08, (byte) 0xDF, (byte) 0xBF, (byte) 0xCB, (byte) 0x01 };
// convert bytes to long time
long val = 0;
for(int i=7;i>=0;i--) {
val <<= 8;
val += 0xff & data[i];
}
// convert 100 nanos to milliseconds
val /= 10000;
// convert to time offset from 1st Jan 1601 AD
Calendar calend = Calendar.getInstance();
calend.set(1601,0,01,00,00,00);
calend.set(Calendar.MILLISECOND, 0);
val += calend.getTimeInMillis();
calend.setTimeInMillis(val);
// display result
DateFormat df = DateFormat.getDateTimeInstance();
System.out.println(df.format(calend.getTime()));
당신은 문제가 16 진수 값을 당기거나 문제가 날짜에 그 진수로 변환가 있습니까? 나는 너를 도울 수 있을지 모르지만 좀 더 자세한 내용은 다른 사람들이 너를 이해하고 돕도록 도울지도 모른다. –
변환 할 16 진수 값을 정확히 알고 있습니까? Btw. 이것은 거의 자바 문제는 아니며 기본 형식을 이해하고 바이트를 읽거나 (* 16 진수 포함하지 않음! *) 숫자로 변환해야합니다 (예 : Epoch 이후 초를 지정하거나 형식이 정의 됨) 번호를 시간으로 변환하십시오. – maaartinus