C#Byte []长时间反向不工作

时间:2013-05-25 18:26:57

标签: c# bytearray long-integer bitconverter

为什么这个程序不起作用?我将一个字节数组转换为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));
    }
}

2 个答案:

答案 0 :(得分:4)

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

来自BitConverter.ToInt64

  

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

基本上,此对话只需8个数组的0, 0, 0, 32, 56, 99, 87, 34个字节(byte)。在这种情况下,会忽略数组的其他字节。

答案 1 :(得分:0)

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

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