长到字符串...不是你通常的转换

时间:2014-07-03 08:10:38

标签: c# character-encoding

只是因为好奇我正在翻阅一些代码来对文件做差异。我已经得到了它的工作等,但其中的一点是它写下面的

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

谢谢:)

1 个答案:

答案 0 :(得分:2)

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

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