Как получить короткие данные в C#, A909 для 41104?

Я пытаюсь преобразовать значение типа int в 16-битный тип без знака (USHORT). В примере 41104 - это A909 в коротком, но в C# я пробовал с примером кода как (с помощью статьи MSDN BitConverter.GetBytes Yöntem (UInt16)):

byte[] bytes = BitConverter.GetBytes(41104);
string bytes = BitConverter.ToString(byteArray);
//It returns "90-A0"

Как я могу получить значение A909 в качестве ushort для 41104?

2 ответа

Решение

На самом деле правильное (= шестнадцатеричное) значение A090. Мне не важно, будет ли это ushort или нет, вам нужно отобразить шестнадцатеричный эквивалент.

Предоставленный вами фрагмент кода уже делает это. Один байт - "A0", другой - "90". Вы просто должны правильно оформить заказ.

Другой способ - позволить.NET сделать работу

String.Format("{0:X}", 41104);

Как видите, на самом деле это не преобразование данных, а другой способ отображения.

Вам нужно изменить порядок байтов:

byte[] bytes = BitConverter.GetBytes(41104);
if (BitConverter.IsLittleEndian)
{    List<byte> tmp = new List<byte>();
     tmp.AddRange(bytes);
     tmp.Reverse();
     bytes = tmp.ToArray();
}
Другие вопросы по тегам