У меня есть вопрос об интересной вещи, которая произошла со мной, когда я попытался преобразовать элементы List<short>
в byte[]
в C #.
Во-первых, мне пришлось читать большой двоичный файл, который содержит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
.Разве это не странно, потому что значения в обоих списках одинаковы?