vim - 二进制编辑

标签 vim binary hex reverse-engineering vi

我一直在修改多个十六进制编辑器,但没有任何效果。

我正在寻找一种以实际二进制(而不是十六进制)更改二进制的方法。这纯粹是为了教育目的,我知道两者之间的转换很简单,但我希望能够像更改十六进制一样更改 1 和 0。

我尝试过将 vim 与 %!xxd -b 一起使用,但它无法与 %!xxd -r 一起使用。我知道如何将文件转换为二进制文件,但我正在寻找一种方法以这种格式动态更改它并能够保存它。

如果我能找到一种通过纯粹在实际二进制文件中编码来实际创建二进制文件的方法,那就更好了。

任何帮助将不胜感激:D

最佳答案

vimgvim 应该可以直接为您工作,无需 xxd 过滤器。

在 (g)vim 中打开文件。将光标放在字符上并输入 ga 以在状态行中查看其字符代码。要插入字符 NNN,请将光标放在所需位置,进入插入模式并键入 Ctrl-v,然后输入三位十进制代码值。使用 Ctrl-v x HH 按十六进制代码输入字符。

确保您的终端未设置为使用 UTF8,因为在 UTF8 中,输入 Ctrl-v 128 实际上会插入 c280,即字符的 utf-8 编码128,而不是 80

LC_ALL=C vim binary-file

这是确保您在 vim 中进行基于二进制字符的编辑的最简单方法,但如果您的终端是 utf-8,这可能会产生奇怪的结果。

LC_ALL=C gvim binary-file

应该打开一个具有正确显示的独立窗口。

仅供引用,如果您确实想使用 utf-8,Ctrl-v u HHHH 是如何使用十六进制代码点 HHHH 输入 Unicode 字符。

关于vim - 二进制编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53477582/

相关文章:

python - Vim for Python 中的自动缩进

c - 如何将数组中的5个数字写入二进制

powershell - 在 PowerShell 管道上输出二进制数据

c - 将数据从十六进制解包为 float

C++ 2 字节数组计算(字符数组、字符串和整数)

python - 如何设置我创建的任何 Vim 文件默认附加 #!/usr/bin/env python

vim - 在 Vim 中映射 Esc 键

php - 三重十六进制代码转RGB

vim - 终端编码在 vim 中如何工作?

c++ - 读取由结构定义的二进制文件