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

如何编辑文件原始字节(Hex)数据?求工具及字符串转字节方法

编辑文件原始十六进制数据的工具

按平台分类推荐:

  • Windows
    • 命令行:用系统内置的certutil,先把二进制文件转成十六进制文本:
      certutil -encodehex input.bin output.hex
      
      编辑output.hex后,再转回二进制:
      certutil -decodehex input.hex output.bin
      
    • GUI工具:HxD,免费开源,直接打开文件就能同时编辑十六进制区域和ASCII预览,支持超大文件。
  • Linux/macOS
    • 命令行:xxd是标配,查看十六进制:
      xxd input.bin
      
      用vim编辑:打开文件后输入:%!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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:01:55