当前位置: 首页 > 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"  // 小写

相关文章:

  • 2025.5.23 【ZR NOI模拟赛 T3】高速公路 题解(容斥,高维前缀和,性质)
  • 精准耐用的工业流量管家 格恩朗金属管浮子流量计
  • MySQL OCP 与 Oracle OCP 认证,怎么选?
  • 生物化学:药品药物 营养和补充剂信息 第三方认证信息 常见误区 汇总
  • 零滑点期货跟单软件在小恒指交易中的作用。
  • 【PhysUnits】15 类型整数基本结构体补充P1(basic.rs)
  • 【第2章 绘制】2.13 坐标变换
  • HA-820A程控高压放大器详解
  • vue2指令方式防抖功能
  • CEH Practical 实战考试真题与答案
  • 【第2章 绘制】2.7 路径、描边与填充
  • 企业信息管理系统的设计与实现(代码+数据库+LW)
  • 开源架构在移动端开发中的卓越应用与深度解析
  • 基于c++11重构的muduo核心库项目梳理
  • node_modules\node-sass: Command failed.报错了
  • Java设计模式之命令模式详解
  • YARN架构解析:大数据资源管理核心
  • Browser-use快速了解
  • WifiEspNow库函数详解
  • 树莓派搭配 Tailscale 搭建个人云网盘
  • 青岛网站推广/网络营销课程总结与心得体会
  • 上海公司网站建设/个人如何做百度推广
  • 网站seo竞争分析工具/网站排名怎么优化
  • 医疗网站建设方案/上海谷歌seo推广公司
  • yy直播是个什么样的平台/站长之家 seo查询
  • 网站建设的案例教程视频教程/seo排名赚下载