如何创建具有特定值的二进制文件?

如何创建具有特定值的二进制文件?

我需要创建一个仅填充11111111.

我只知道如何创建零填充的二进制文件

dd if=/dev/zero bs=18520 count=1

您能告诉我应该使用管道中的什么命令来填充垃圾箱吗1awk在这种情况下我该如何使用?

答案1

可能最容易使用tr将零转换为/dev/zero您想要的任何值,然后使用ddhead等剪切长度。

这将写入 18520 个字节,所有位均为 1,因此值为 0xff 或 255,或八进制的 377,因为输入必须是:

< /dev/zero tr '\000' '\377' | head -c 18520 > test.bin

(要从十六进制或十进制转换为八进制,您可以使用printf "%o\n" 0xff等。)


要生成长于一字节字符串的流,我将使用 Perl:

perl -e '$a = "abcde" x 1024; print $a while 1' | head ...

(当然,您也可以在那里使用"\xff"or "\377"。我在那里使用重复运算符x 1024主要是为了避免最小限度的小写入。更改它可能会也可能不会影响其性能。)

答案2

不要使用dd bs=…:它不可靠。要么使用ibs=1 obs=1或使用不易出错的工具。大多数head实现都可以计算字节数:

</dev/zero head -c 18520

如果您希望文件填充零以外的单个字节,请使用 更改字节值tr。对于全位为一:

</dev/zero head -c 18520 | tr '\0' '\377'

答案3

具体回答你的问题,使用 dd 与管道中的 tr 配合使用效果很好

dd if=/dev/zero bs=18520 count=1 | tr '\000' '1' > test.bin

但是,您应该澄清这一点的范围,以便为您提供更相关的答案

相关内容