Вопрос

Я пытаюсь преобразовать значение int для 16-битного unsigned Char тип (USHORT). В примере 41104 - A909 в USHORT, но в C # я попробовал с образцом кода как (с помощью статьи MSDN Bitconverter.getbytes yöntem (uint16)):

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

Как мне получить значение A909, как USHORT за 41104?

Это было полезно?

Решение

На самом деле правильное (= шестнадцатеричное) значение составляет 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();
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top