如何将UInt和其他类型转换为字符串十六进制以向服务器发送数据?C#

如何将UInt和其他类型转换为字符串十六进制以向服务器发送数据?C#,c#,visual-studio,sockets,uwp,hex,C#,Visual Studio,Sockets,Uwp,Hex,有关申请的详情: 在Visual Studio 2019(Windows 10)下开发 在UWP平台上用C#和XAML语言设计 应用程序从远程服务器接收信息。带有插座的连接用于双方之间的通信 要与服务器通信,应用程序必须以字节数组的形式发送数据,以便正确读取数据 我需要将这些变量传递给字符串十六进制,然后我有一个方法将字符串十六进制传递给字节数组 要发送的变量: UInt16 ID_MESSAGE = 201; SByte ID_WAY = -1; UInt16 SIZE = 16;

有关申请的详情:

  • 在Visual Studio 2019(Windows 10)下开发
  • UWP
    平台上用
    C#
    XAML
    语言设计
应用程序从远程服务器接收信息。带有插座的连接用于双方之间的通信

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

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

要发送的变量:

 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

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

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

谢谢您在编辑一个案例的工作性能执行前的第一个响应。在ID_-WAY数组中,我有:FF-00-00-00,而不是我想要的FF-FF-FF-FF。您有解决方案吗?我还有一个bool
bool RIGHT=false
如何将其传递到字节数组?编辑后,您可以看到
ID\u WAY
已正确转换为
FF-FF-FF
。对于您的
boolright=false
,您可以使用与构建其他数组相同的方法来执行此操作<代码>位转换器.GetBytes(右?1:0)是的,它很有效。我利用最后一个问题。我有
string address=“192.54.185.58”
我需要将它传入
string[32]
然后以字节为单位,我如何才能做到这一点?谢谢你的回复。你的评论不清楚。您可以使用
address.tocharray()
string
转换为
char[]
,或者根据您的编码,您可以使用
Encoding.Unicode.GetBytes(address)
将其转换为
byte[]
,然后可以与
位转换器.ToString(…)
一起使用。或者您可以将IP的各个部分解析为字节(因为它们就是字节)
address.Split('.')。选择(b=>byte.parse(b)).ToArray()
。谢谢!您在编辑一个案例的工作性能执行前的第一个响应。在ID_-WAY数组中,我有:FF-00-00-00,而不是我想要的FF-FF-FF-FF。您有解决方案吗?我还有一个bool
bool RIGHT=false
如何将其传递到字节数组?编辑后,您可以看到
ID\u WAY
已正确转换为
FF-FF-FF
。对于您的
boolright=false
,您可以使用与构建其他数组相同的方法来执行此操作<代码>位转换器.GetBytes(右?1:0)是的,它很有效。我利用最后一个问题。我有
string address=“192.54.185.58”
我需要将它传入
string[32]
然后以字节为单位,我如何才能做到这一点?谢谢你的回复。你的评论不清楚。您可以使用
address.tocharray()
string
转换为
char[]
,或者根据您的编码,您可以使用
Encoding.Unicode.GetBytes(address)
将其转换为
byte[]
,然后可以与
位转换器.ToString(…)
一起使用。或者您可以将IP的各个部分解析为字节(因为它们就是字节)
address.Split('.')。选择(b=>byte.parse(b)).ToArray()