Как преобразовать UInt и другие типы в String Hex для отправки данных на сервер? C # - PullRequest
0 голосов
/ 23 мая 2019

Подробности о приложении:

  • Разработано в Visual Studio 2019 (Windows 10)
  • Разработано на UWP платформе с C# & XAML языком

Приложение получает информацию с удаленного сервера. Соединение с розетками используется для связи между двумя сторонами.

Для связи с сервером приложение должно отправлять данные в байтовом массиве, чтобы их можно было правильно прочитать.

Мне нужно передать эти переменные в String Hex, а затем у меня есть метод передачи String Hex в Byte Array.

Переменные для отправки:

 UInt16 ID_MESSAGE = 201;
 SByte ID_WAY = -1;
 UInt16 SIZE = 16;

 enum TYPE_STATE_DEVICE
 {
    LOGOUT = 0,
    OUT_OF_ORDER,
    LOGIN,
    REPLAY
 };

Как я могу передать эти переменные в шестнадцатеричном формате, чтобы найти те же значения ниже?

Вот значения, которые переменные должны иметь в шестнадцатеричном формате:

ID_MESSAGE = C9-00-00-00
ID_WAY = FF-FF-FF-FF
SIZE = 10-00-00-00
TYPE_STATE_DEVICE.LOGIN = 02-00-00-00

Таким образом, полная строка Hex должна быть такой:

HexString = C9-00-00-00-FF-FF-FF-FF-10-00-00-00-02-00-00-00

1 Ответ

2 голосов
/ 23 мая 2019

Вы можете поместить все свои значения в байтовый массив, а затем использовать класс BitConverter для преобразования его в строку.

var ID_MESSAGE_ARRAY = BitConverter.GetBytes((int)ID_MESSAGE);
var ID_WAY_ARRAY = BitConverter.GetBytes((int)ID_WAY);
var SIZE_ARRAY = BitConverter.GetBytes((int)SIZE);
var TYPE_STATE_DEVICE_ARRAY = BitConverter.GetBytes((int)TYPE_STATE_DEVICE.LOGIN);

var HexString = BitConverter.ToString(ID_MESSAGE_ARRAY.Concat(ID_WAY_ARRAY).Concat(SIZE_ARRAY).Concat(TYPE_STATE_DEVICE_ARRAY).ToArray());
...