
C# 中的 16 进制与字符串及字节数组互转
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
本文介绍了在C#编程语言中如何实现16进制字符串和字节数组之间的相互转换的方法,适用于需要处理二进制数据的开发者。
在C#编程中进行16进制与字符串、字节数组之间的转换是常见的操作,尤其是在串口通信场景下。
首先介绍几个关键知识点:
1. **将16进制表示的字符串转化为字节数组**:
函数`strToHexByte`用于实现这一功能。它会移除输入字符串中的空格(如果存在),并检查其长度是否为偶数,如不符合则添加一个空格以确保正确性。接着创建一个新的字节数组,并遍历每个字符对进行转换——每两个字符代表一个字节的数据值。使用`Convert.ToByte`方法将这些字符转化为对应的16进制数值的字节形式,最后返回这个新的字节数组。
2. **从字节数组生成16进制表示的字符串**:
函数`byteToHexStr`负责执行这一转换过程。通过遍历数组中的每个元素(即每个字节),使用`ToString(X2)`方法将其转化为一个含有两位字符的十六进制形式,然后将所有这些转化后的结果连接起来形成最终的目标16进制格式字符串。
3. **汉字到16进制表示**:
函数`ToHex`接收三个参数:目标汉字字符串、用于编码的字符集(如UTF-8或GBK)以及一个布尔值来决定是否在每个字节对应的十六进制数值之间插入逗号作为分隔符。首先,根据给定的字符集获取输入汉字串的字节数组表示,然后遍历这些字节数据,并将每一个转化为相应的16进制字符串形式(如需要则添加逗号)。最后返回拼接后的所有转换结果组成的完整小写十六进制格式字符串。
4. **从16进制回溯到原始汉字**:
函数`UnHex`执行相反的操作,即接收一个含有有效字符的十六进制表示串,并将其还原为对应的汉字文本。首先移除输入字符串中的非数值符号(例如逗号、换行符等),保证只有有效的16进制字符存在;如果长度是奇数,则在末尾添加代表空格的十六进制代码`20`以确保处理正确性。接下来,将清理后的字符串解析为字节数组,并使用指定的字符集对其进行解码操作,最终获得原始汉字文本。
这些转换功能能够帮助开发人员高效地编码与解码串口通信中的数据。例如,在接收到16进制格式的数据后可以利用`byteToHexStr`将其转化为可读形式再通过`UnHex`还原为原文本;而在发送信息时,则可以通过先用`strToHexByte`将文本转成字节数组,随后经由串口传输出去。这些方法对于调试和理解数据的传输过程十分有用。
全部评论 (0)


