c# - 如何将 UInt 和其他类型转换为 String Hex 以将数据发送到服务器?C#
问题描述
有关应用程序的详细信息:
- 在 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());
推荐阅读
- c# - 在c#中手动添加行时如何过滤datagridview
- algorithm - 根据 2D 投影坐标查找等边三角形的 3D 点
- random - 如何在不引入偏差的情况下生成一个范围内的随机 Rust 整数?
- c - MSP430:需要帮助设置此 TimerA
- html - 使用 boostrap 为台式机和笔记本电脑 13 英寸设置 col 布局
- exception - Java Try Catch 装饰器
- ios - 不调用 iOS 12 Handoff 委托方法
- android - 当用户使用适配器单击项目时隐藏和显示项目
- php - PHP PGP 在导入前检查密钥大小
- swift - 用动画隐藏上方的 CollectionView 单元格(Swift 4)