当前位置: 首页 > news >正文

十六进制数据转换为对应的字符串

十六进制数据转换为对应的字符串(例如 0x08 转换为 "08"),你可以按照以下步骤实现:

方法 1:使用 sprintf 逐个字节转换

#include <stdio.h>void hex_to_str(const unsigned char *hex, int len, char *str) {for (int i = 0; i < len; i++) {sprintf(str + i * 2, "%02X", hex[i]); // 大写字母// 或者用小写字母:// sprintf(str + i * 2, "%02x", hex[i]);}
}int main() {unsigned char can_id_data[12] = {0x08, 0xAB, 0xCD, 0x1F, 0x23, 0x45, 0x67, 0x89, 0x0A, 0xBC, 0xDE, 0xF0};char str[25] = {0}; // 12字节 * 2字符 + 1终止符 = 25字节hex_to_str(can_id_data, 12, str);printf("Result: %s\n", str); // 输出: "08ABCD1F234567890ABCDEF0"return 0;
}

方法 2:手动转换(避免 sprintf

#include <stdio.h>void hex_to_str(const unsigned char *hex, int len, char *str) {const char *hex_chars = "0123456789ABCDEF"; // 大写字母// 或者用小写字母:// const char *hex_chars = "0123456789abcdef";for (int i = 0; i < len; i++) {str[i * 2]     = hex_chars[(hex[i] >> 4) & 0x0F]; // 高4位str[i * 2 + 1] = hex_chars[hex[i] & 0x0F];        // 低4位}str[len * 2] = '\0'; // 终止符
}int main() {unsigned char can_id_data[12] = {0x08, 0xAB, 0xCD, 0x1F, 0x23, 0x45, 0x67, 0x89, 0x0A, 0xBC, 0xDE, 0xF0};char str[25] = {0}; // 12字节 * 2字符 + 1终止符 = 25字节hex_to_str(can_id_data, 12, str);printf("Result: %s\n", str); // 输出: "08ABCD1F234567890ABCDEF0"return 0;
}

注意事项:

  1. 大小写选择

    • 使用 %02X 或 "0123456789ABCDEF" 会生成大写字母(如 "08AB")。

    • 使用 %02x 或 "0123456789abcdef" 会生成小写字母(如 "08ab")。

  2. 缓冲区大小

    • 确保 str 足够大(2 * len + 1),以容纳转换后的字符串和终止符 \0

  3. 性能

    • 方法 2(手动转换)通常比方法 1(sprintf)更快,适合高性能场景。

示例输出:

如果 can_id_data 包含 {0x08, 0xAB, 0xCD, 0x1F, ...},转换后的字符串为:

"08ABCD1F234567890ABCDEF0"  // 大写
"08abcd1f234567890abcdef0"  // 小写

http://www.xdnf.cn/news/700831.html

相关文章:

  • Python 如何让自动驾驶的“眼睛”和“大脑”真正融合?——传感器数据融合的关键技术解析
  • Java+POI+EXCEL导出柱形图(多列和单列柱形图)
  • 外骨骼驾驶舱HOMIE——3500元让人形机器人1:1复刻人类动作:类似Mobile ALOHA主从臂的主从分离版
  • 深度学习入门:从零搭建你的第一个神经网络
  • Vue3对接deepseek实现ai对话
  • 系统性学习C语言-第十讲-操作符详讲
  • javascript中运算符的优先级
  • 如何把示例数据0.617、0.229、0.174保留两位小数,并在后面添加%处理,处理后的结果如下:61.7%、22.9%、17.4%
  • Java | 韩顺平 循序渐进学Java自用笔记---OOP高级(二)
  • Kaggle-基于xgboost的销量预测
  • Java基础 Day23
  • ROC和生存曲线的绘制-spss
  • 精准监测,健康无忧--XC3576H工控主板赋能亚健康检测仪
  • 数据库相关面试
  • 74道TypeScript高频题整理(附答案背诵版)
  • Python解析DOC文档表格
  • Ovito建模并正交化方法
  • 删除队列中整数
  • 股票收益率的计算
  • 新能源工厂环境监控系统如何提升电池生产洁净度
  • C# async/await 完全指南:从入门到实践
  • API 与 SPI
  • iframe三方页面嵌入
  • 【深度学习-pytorch篇】3. 优化器实现:momentum,NAG,AdaGrad,RMSProp,Adam
  • 张 测试大数据集的效果
  • 国内外AI编程工具对比(Trae对比Cursor)
  • 【网络通信】网络通信全解
  • 【操作系统】硬件结构知识点详解
  • jenkins配置ssh server通过ssh自动上传构建文件及执行脚本
  • 教师申报书课题——项目名称: 基于DeepSeek-R1与飞书妙记的课堂话语智能分析实践计划