Преобразовать массив байтов (Byte[]) в целое без знака (UInt32) - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. У меня простой вопрос. Мне нужно преобразовать массив байтов (

Byte[]

) в целое без знака (

UInt32

). На С++ я бы сделал это memcpy (предварительно занулив переменную назначения). Меня устраивает именно побитовое копирование. А как сделать на C# технически красиво ума не приложу. Есть еще одна деталь. Переменная назначения у меня длиной 4 байта, но копировать мне нужно только 3. Старший остается нулевым. Из всего, что я видел, ничего лучше следующего не нашел
Byte[] buffer = ...;
UInt32 dest = (UInt32)buffer[0] + (UInt32)( buffer[1] << 8 )+ (UInt32)( buffer[2] << 16 );
Подскажите, как сделать это элегантно.
Немного не так. Мне все таки нужно копировать все четыре байта
Byte[] buffer = ...;
UInt32 dest = (UInt32)buffer[0] + (UInt32)( buffer[1] << 8 ) + (UInt32)( buffer[2] << 16 ) + (UInt32)( buffer[3] << 24 );

Решение задачи: «Преобразовать массив байтов (Byte[]) в целое без знака (UInt32)»

textual
Листинг программы
byte[] b = {45, 98, 124, 76};
uint n = BitConverter.ToUInt32(b, 0);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы