当我尝试在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
。因为两个列表中的值都相同,这很奇怪吗?
答案 0 :(得分:0)
最后,我已经解决了这个问题。问题不在于将short转换为字节,而是部分尚未发布的代码。具体来说,我犯了一个非常初学者的错误,以错误的方式将2D数组转换为1D数组。现在一切正常。感谢您的所有答复,不便之处,敬请谅解!