Long to String.不是你通常的转换
本文关键字:转换 to String Long | 更新日期: 2023-09-27 18:11:26
只是出于好奇,我正在翻找一些代码来对文件进行diff。我已经让它正常工作了,等等但其中一点是它会写以下内容
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;
}
谢谢:)
无论您做什么来打印文件中的值,都是将这些值解释为ASCII编码的文本:
0x30 = '0'
0x34 = '4'
0x46 = 'F'
0x46 = 'F'
0x49 = 'I'
0x44 = 'D'
0x53 = 'S'
0x42 = 'B'