c# - 如何将十六进制字符串和十六进制字符串和十六进制字符串中的十进制值转换为字节
问题描述
我有十进制值的字节数组,[0, 4, 20, 141]
我希望将其转换为[0x00, 0x04, 0x14, 0x8D]
我需要将此数组用作字节以添加到缓冲区中
当前数据:
byte[] packet = new byte[4];
packet[0] = 0;
packet[1] = 4;
packet[2] = 20;
packet[3] = 141;
发送到串口的预期数据如下:
byte[] mBuffer = new byte[4];
mBuffer[0] = 0x02;
mBuffer[1] = 0x04;
mBuffer[2] = 0x14;
mBuffer[3] = 0x8D;
试过:
Convert.ToByte(string.Format("{0:X}", packet[0]));
但是抛出一个异常:
输入字符串的格式不正确。
解决方案
您收到异常是因为您试图替换字符串中没有“$”前缀的变量。尝试这个:
// Converts integer 141 to string "8D"
String parsed = String.Format($"{0:X}", packet[3]);
然后,您应该能够使用以下方法转换为字节:
// Parses string "8D" as a hex number, resulting in byte 0x8D (which is 141 in decimal)
Byte asByte = Byte.Parse(parsed, NumberStyles.HexNumber);
推荐阅读
- java - 无法使用 mysql 在 maven eclipse 中使用休眠创建表
- c - 动态初始化大型数组时的 Segfault 11
- flutter - Dart 包版本如何工作以及我应该如何对我的 Flutter 插件进行版本控制?
- python - 使用 self.size 在 kivy 中定位画布
- java - 如何将int值设置为spring缓存注释中的键
- javascript - 你能限制 MDX 页面渲染的 React 组件吗?
- pytorch - RuntimeError: 预期隐藏 [0] 大小 (2, 1, 100),得到 (1, 1, 100)
- google-sheets - 如何停止/冻结/暂停波动的 RAND / RANDBETWEEN / RANDARRAY?
- django - Django Model @property 重复查询
- compiler-construction - 机器语言支持或不支持间接跳转时的代码生成器