Одинаковые целочисленные списки, разные байтовые массивы - PullRequest
0 голосов
/ 01 декабря 2018

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

1 Ответ

0 голосов
/ 02 декабря 2018

В конце концов, я решил проблему.Проблема заключалась не в преобразовании коротких в байты, а в части кода, которая там не была опубликована.В частности, я сделал очень новичок, я неправильно преобразовал 2D-массив в 1D-массив.Теперь все работает отлично.Спасибо за ваши ответы и приносим извинения за неудобства!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...