Как получить данные Ushort в C #, A909 за 41104?
-
26-09-2019 - |
Вопрос
Я пытаюсь преобразовать значение 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();
}