首页 > 解决方案 > 如何将 UInt 和其他类型转换为 String Hex 以将数据发送到服务器?C#

问题描述

有关应用程序的详细信息:

应用程序从远程服务器接收信息。带有套接字的连接用于双方之间的通信。

为了与服务器通信,应用程序必须以字节数组的形式发送数据,以便正确读取数据。

我需要将这些变量传递给字符串十六进制,然后我有一个方法将字符串十六进制传递给字节数组。

要发送的变量:

 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

所以完整的十六进制字符串必须是这样的:

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

标签: c#visual-studiosocketsuwphex

解决方案


您可以将所有值放入一个字节数组中,然后使用 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());

推荐阅读