如何将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。您有解决方案吗?我还有一个boolbool 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()
。