"该资源提供了一段C#代码,用于实现十六进制字符串与字节数组之间的转换。其中,`hexStrToByteArray`函数将十六进制字符串转换为字节数组,而`byteArrayToHexStr`函数则执行相反的操作,将字节数组转换回十六进制字符串。" 在编程中,特别是在处理二进制数据时,十六进制表示法经常被用作人类可读的格式。这段C#代码提供了两个关键功能,对于理解和操作这种数据转换非常有用。 首先,`hexStrToByteArray`函数接收一个十六进制表示的字符串,并将其转换为字节数组。这个过程涉及以下几个步骤: 1. 初始化一个空的`QByteArray`对象`senddata`来存储结果。 2. 遍历输入字符串的每个字符,两个字符一组,因为一个字节由两个十六进制数字组成。 3. 使用`convertHexChar`辅助函数将每个十六进制字符转换为其对应的十进制值。 4. 将两个连续的十进制值组合成一个字节。 5. 将生成的字节添加到`senddata`中。 6. 最后,根据实际填充的字节数调整`senddata`的大小并返回。 `convertHexChar`函数负责将单个十六进制字符转换为十进制整数。它检查字符是否在有效的十六进制字符范围内(0-9, A-F, a-f),并根据字符的位置映射到相应的十进制值。如果字符不在有效范围内,它返回-1表示错误。 其次,`byteArrayToHexStr`函数将字节数组转换为十六进制字符串。这个过程包括: 1. 使用`QByteArray`的`toHex`方法将字节数组转换为一个包含双字符的十六进制表示的字符串。 2. 遍历得到的双字符字符串,每次取出两个字符,形成一个完整的十六进制数字,并将其添加到结果字符串`temp`中。 3. 去除可能存在的前导空格,并将结果转换为大写形式,以保持一致性。 4. 返回最终的十六进制字符串。 这两个函数对于在C#环境中处理十六进制数据和字节数组的交互是很有用的,例如在网络通信、数据存储或文件解析等场景。通过这样的转换,可以方便地在易于阅读的字符串和实际二进制数据之间进行切换。
static QByteArray hexStrToByteArray(QString str) {
QByteArray senddata;
int hexdata, lowhexdata;
int hexdatalen = 0;
int len = str.length();
senddata.resize(len / 2);
char lstr, hstr;
for (int i = 0; i < len; ) {
hstr = str.at(i).toLatin1();
if (hstr == ' ') {
i++;
continue;
}
i++;
if (i >= len) {
break;
}
lstr = str.at(i).toLatin1();
hexdata = convertHexChar(hstr);
lowhexdata = convertHexChar(lstr);
if ((hexdata == 16) || (lowhexdata == 16)) {
break;
} else {
hexdata = hexdata * 16 + lowhexdata;
}
i++;
senddata[hexdatalen] = (char)hexdata;
hexdatalen++;
}
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Ansys Comsol实现力磁耦合仿真及其在电磁无损检测中的应用
- 西门子数控系统调试与配置实战案例教程
- ELM多输出拟合预测模型:简易Matlab实现指南
- 一维光子晶体的Comsol能带拓扑分析研究
- Borland-5技术资料压缩包分享
- Borland 6 技术资料分享包
- UE5压缩包处理技巧与D文件介绍
- 机器学习笔记:深入探讨中心极限定理
- ProE使用技巧及文件管理方法分享
- 增量式百度图片爬虫程序修复版发布
- Emlog屏蔽用户IP黑名单插件:自定义跳转与评论限制
- 安装Prometheus 2.2.1所需镜像及配置指南
- WinRARChan主题包:个性化你的压缩软件
- Neo4j关系数据映射转换测试样例集
- 安装heapster-grafana-amd64-v5-0-4所需镜像介绍
- DVB-C语言深度解析TS流