只是因为好奇我正在翻阅一些代码来对文件做差异。我已经得到了它的工作等,但其中的一点是它写下面的
long test = 0x3034464649445342L;
我知道这只是另一种写作方式......
long test = 3473478480300364610;
...但是当它写入文件时,它会打印出' BSDIFF40'。任何人都可以了解这是如何转换的?我尝试过不同的编码(ANSI,ASCII等),但无法弄清楚。将其写入文件的行如果有助于任何人......
private static void WriteInt64(long value, byte[] buf, int offset)
{
var valueToWrite = value < 0 ? -value : value;
for (var byteIndex = 0; byteIndex < 8; byteIndex++)
{
buf[offset + byteIndex] = (byte)(valueToWrite % 256);
valueToWrite -= buf[offset + byteIndex];
valueToWrite /= 256;
}
if (value < 0)
buf[offset + 7] |= 0x80;
}
谢谢:)
答案 0 :(得分:2)
无论您在文件中打印值是什么,都将这些值解释为ASCII编码文本:
0x30 = '0'
0x34 = '4'
0x46 = 'F'
0x46 = 'F'
0x49 = 'I'
0x44 = 'D'
0x53 = 'S'
0x42 = 'B'