假设我有一个名为 file.dat 的二进制文件,其中包含数据“James is a good boy”。
现在假设我想在 file.dat 的第 8 个索引处插入数据“not”,这样 file.dat
将是“詹姆斯不是一个好孩子”。我该如何在 ubuntu 中使用十六进制编辑器执行此操作?
答案1
安装Bless:
sudo apt update
sudo apt install bless
Bless hex 编辑器(十六进制编辑器)是一个跨平台应用程序,适用于 Linux、Microsoft Windows、MacOS 等主流操作系统。
可以使用 Tab 打开任意数量的窗口。
您可以快速找到某些内容并替换它。
我们在 Bless Hex 编辑器(十六进制编辑器)中具有高级复制和粘贴功能。
您可以使用 Bless 最佳十六进制编辑器来编辑大量数据文件以及块设备。
该应用程序的最佳部分之一是您可以通过安装所需的插件根据需要获得更多功能。
默认情况下,您可以以 .txt 和 .html 格式导出数据,但对于更多其他格式,您可以使用插件。
答案2
如果数据确实如您所指出的那样在文件中可见,那么您最终将能够使用 vi 编辑器或 sed 对其进行编辑,只需进行更改以在其中添加“not”即可。
例子:
sed -e "s/James is a good boy/James is not a good boy/g" file.dat > newfile.dat
但是,如果不知道您要做什么的真实示例,就很难在不损坏文件并使其无用的情况下提出建议。例如,十六进制编辑器中的“James”行实际上如下所示:614a 656d 2073 7369 6120 6720 6f6f 2064 6f62 0a79
您需要在其中添加三个十六进制字符和空格:6e20 746f 0a20
但如果这原本是一个特定程序(我在想 Ufile 或其他应用程序)使用的二进制文件,则文件的格式可能不再同步,因为您的编辑将五个字符推得太靠右了。
现实生活中的例子:我收到的 EDI 文件采用一种非常古老的格式,称为 COMPORD。这些文件对文件中每条信息的存储位置都有严格的标准。每行只能有 80 个字符长。如果我通过添加五个字符来更改其中的一些数据,那么该行的其余部分将位于软件无法读取的错误位置。而该行将有 85 个字符长,因此将被截断或拒绝。
这就是为什么了解读取 file.dat 的程序期望在索引的每一行中看到什么很重要。如果它是可变长度且包含分隔符,那么是的,您可以编辑它以添加额外的字符。如果它是固定长度或每行包含用空格或其他 ASCII 代码填充的字段,那么您将损坏数据文件。