You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3中如何将bytes转换为C数组(类似xxd -i功能)

解决方案

当然有便捷的单行代码可以实现,完全不需要额外依赖,用Python自带的字符串格式化和生成器就能搞定!

仅保留字节内容(满足你省略类型声明的需求)

直接用这段单行代码:

x = b'abc123'
print(', '.join(f'0x{b:02x}' for b in x))

运行后输出:

0x61, 0x62, 0x63, 0x31, 0x32, 0x33

生成完整的C数组声明(和xxd -i输出风格一致)

如果需要和xxd -i一样的完整声明,只需要给拼接好的字节内容套个模板:

x = b'abc123'
print(f'unsigned char x[] = {{ {", ".join(f"0x{b:02x}" for b in x)} }};')

运行后输出:

unsigned char x[] = { 0x61, 0x62, 0x63, 0x31, 0x32, 0x33 };

代码逻辑简单解释

  • 遍历bytes对象中的每个字节b,用f'0x{b:02x}'将其格式化为两位十六进制的小写字符串(保证和xxd输出格式一致)
  • 用, 作为分隔符,把所有格式化后的字节字符串拼接成数组元素列表
  • 完整声明版本只是把拼接结果嵌入到C数组的语法模板里而已

如果需要更贴近xxd -i的换行排版(比如每行显示12个元素),可以稍微扩展一下,但基础需求用上面的单行代码就完全够用了。

内容的提问来源于stack exchange,提问作者MateuszL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:48:49