Преобразование массива байтов в целое число и обратно в C#

Класс BitConverter предоставляет статические методы, которые позволяют преобразовывать различные типы данных в и из массивов байтов. (Я полагаю, что было бы разумнее назвать его классом ByteConverter.) Эти методы можно использовать для преобразования данных, загружаемых из файлов и других источников, которые были сохранены способами, которые затрудняют его для чтения значения непосредственно в соответствующих типах.

В этом примере используется следующий код для преобразования некоторых байтов в целое и обратно. Большая часть кода используется для отображения байтов. Вызовы BitConverter, которые довольно просты, выделены жирным шрифтом.

private void Form1_Load(object sender, EventArgs e)
{
    // Инициализировать массив байтов.
    byte[] bytes = { 121, 222, 111, 212 };
    string txt = "";
    for (int i = 0; i < bytes.Length; i++)
    {
        txt += bytes[i].ToString() + " ";
    }
    txtBytes1.Text = txt;

    // Преобразование в целое число.
    int int_value = BitConverter.ToInt32(bytes, 0);
    txtInteger.Text = int_value.ToString();

    // Преобразуем обратно в массив байтов.
    byte[] new_bytes = BitConverter.GetBytes(int_value);
    txt = "";
    for (int i = 0; i < new_bytes.Length; i++)
    {
        txt += new_bytes[i].ToString() + " ";
    }
    txtBytes2.Text = txt;
    txtBytes1.Select(0, 0);
}

Код инициализирует массив байтов произвольным значением. Затем он использует BitConverter.ToInt32 для преобразования этих байтов в 32-разрядное целое. Наконец, он использует BitConverter.GetBytes для преобразования целого числа обратно в массив байтов.

Класс BitConverter делает все это относительно простым. Это становится немного более запутанным, если данные, с которыми вы работаете, поступали с другого компьютера, который хранит байты целого в другом порядке. Например, если вы работаете над системой «большого конца», но данные были сгенерированы в «малоконечной» системе или наоборот. В этом случае вам может потребоваться изменить порядок байтов перед преобразованием их в целые числа. Дополнительную информацию см. В интерактивной справке для класса BitConverter .

Источник: http://csharphelper.com/blog/2017/10/convert-an-array-of-bytes-into-an-integer-and-back-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector