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;
    }

谢谢:)

Long to String.不是你通常的转换

无论您做什么来打印文件中的值,都是将这些值解释为ASCII编码的文本:

0x30 = '0'
0x34 = '4'
0x46 = 'F'
0x46 = 'F'
0x49 = 'I'
0x44 = 'D'
0x53 = 'S'
0x42 = 'B'