相同的整数列表,不同的字节数组

时间:2018-12-01 18:18:20

标签: c# arrays type-conversion

当我尝试在C#中将List<short>的元素转换为byte[]时,我遇到了一件有趣的事情。

首先,我必须读取大的二进制文件,该文件包含262144个short类型的signed数字。我已阅读文件,并使用以下代码构建了数字列表:

byte[] content = null;
content = File.ReadAllBytes(scanName);
List<int> transformed = new List<int>();

for (int n = 0; n < content.Length; n += 2) // 2 bytes 
{
  short sample = BitConverter.ToInt16(content, n);
  transformed.Add(sample);
}

然后,我使用算法对数字进行了压缩和解压缩,并获得了相同的值,这似乎是正确的。尝试将两个列表都转换为字节数组时,会出现问题。这是通过以下方法完成的:

private byte[] ToByte(List<short> list){
    List<byte> toRet = new List<byte>();

    foreach(short s in list)
    {
       byte[] converted = BitConverter.GetBytes(s);
        foreach(byte b in converted)
        {
           toRet.Add(b);
        }
     }
    return toRet.ToArray();
}

但是当我将两个字节数组与first.SequenceEqual(second)比较时,该方法返回了false。因为两个列表中的值都相同,这很奇怪吗?

1 个答案:

答案 0 :(得分:0)

最后,我已经解决了这个问题。问题不在于将short转换为字节,而是部分尚未发布的代码。具体来说,我犯了一个非常初学者的错误,以错误的方式将2D数组转换为1D数组。现在一切正常。感谢您的所有答复,不便之处,敬请谅解!