0

为什么这个程序不起作用?我将一个字节数组转换为长数组。然后从 long 我转换回字节数组。生成的字节数组与原始数组不同。

class Program
{
    static void Main(string[] args)
    {
        byte[] myBytes = { 0, 0, 0, 32, 56, 99, 87, 34, 56, 56, 34, 33, 67
                         , 56, 66, 72, 1, 0, 0, 56, 0, 22};

        long data = BitConverter.ToInt64(myBytes, 0);

        byte[] byteData = BitConverter.GetBytes(data);

        Console.WriteLine("byte array: " + BitConverter.ToString(myBytes));
        Console.WriteLine("byte array: " + BitConverter.ToString(byteData));
    }
}
4

2 回答 2

4

由于l4V已经给出了正确的假设,我只想将其添加为 aswer 但我认为我的答案不值得任何投票,因为所有赞成票都应该投给l4V。点赞他的评论。

BitConverter.ToInt64

ToInt64方法将索引startIndexstartIndex + 7的字节转换为 Int64 值。

所以基本上,这个对话只需要你数组的8字节( )。在这种情况下,您的数组的其他字节将被忽略。0, 0, 0, 32, 56, 99, 87, 34byte

于 2013-05-25T18:48:02.160 回答
0

字节长度超过一个long可以容纳的(8 字节,64 位)。

对于替代解决方案,如果您的目标框架高于(包括).Net 4.0 ,我建议使用BigInteger 。

于 2013-05-25T18:45:08.927 回答