Преобразование массива байтов в целое число и обратно в 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 делает все это относительно простым. Это становится немного более запутанным, если данные, с которыми вы работаете, поступали с другого компьютера, который хранит байты целого в другом порядке. Например, если вы работаете над системой «большого конца», но данные были сгенерированы в «малоконечной» системе или наоборот. В этом случае вам может потребоваться изменить порядок байтов перед преобразованием их в целые числа. Дополнительную информацию см. В интерактивной справке для