如何编辑文件原始字节(Hex)数据?求工具及字符串转字节方法
编辑文件原始十六进制数据的工具
按平台分类推荐:
- Windows
- 命令行:用系统内置的
certutil,先把二进制文件转成十六进制文本:
编辑certutil -encodehex input.bin output.hexoutput.hex后,再转回二进制:certutil -decodehex input.hex output.bin - GUI工具:HxD,免费开源,直接打开文件就能同时编辑十六进制区域和ASCII预览,支持超大文件。
- 命令行:用系统内置的
- Linux/macOS
- 命令行:
xxd是标配,查看十六进制:
用xxd input.binvim编辑:打开文件后输入:%!xxd切换到十六进制模式,编辑完成后输入:%!xxd -r还原并保存退出。 - GUI工具:Linux用Ghex,macOS用Hex Fiend,都是轻量免费的可视化编辑器,操作直观。
- 命令行:
- 跨平台
- 010 Editor(付费):支持二进制模板解析,能快速定位复杂文件结构,适合专业场景;如果需要免费跨平台,也可以用在线十六进制编辑器,但不建议处理敏感文件。
字符串转原始字节的方法
不同编程语言的实现方式不同,以下是常用场景的示例:
Python
直接通过encode()指定编码生成字节对象,写入文件时用二进制模式:
# 转UTF-8字节 text = "需要转换的字符串" byte_data = text.encode('utf-8') # 写入二进制文件 with open('result.bin', 'wb') as f: f.write(byte_data)
如果需要ASCII编码,可添加错误处理:
byte_data = text.encode('ascii', errors='replace') # 无法编码的字符用?替换
C语言
字符串在内存中本身就是字节序列,直接用fwrite写入二进制文件:
#include <stdio.h> #include <string.h> int main() { const char* str = "Hello World"; FILE* fp = fopen("result.bin", "wb"); if (fp != NULL) { fwrite(str, sizeof(char), strlen(str), fp); fclose(fp); } return 0; }
Node.js
使用Buffer.from()转换字符串为字节缓冲区:
const fs = require('fs'); const text = "测试字符串"; const buffer = Buffer.from(text, 'utf8'); // 写入文件 fs.writeFileSync('result.bin', buffer);
注意点
之前的方案无效,大概率是编码不匹配导致的——比如你转字节时用了错误的编码(比如默认ASCII但字符串含非ASCII字符),或者工具操作时没注意二进制/文本模式的区别(比如用文本编辑器打开二进制文件再保存,会破坏原始数据)。
内容的提问来源于stack exchange,提问作者elnexreal
相关产品推荐
相关产品推荐

