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

Dis*_*ame 8 dd shell-script binary

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

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

dd if=/dev/zero bs=18520 count=1
Run Code Online (Sandbox Code Playgroud)

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

ilk*_*chu 15

也许最容易使用tr的从零转换/dev/zero到任何你想要的,然后用切成段dd或head或等。

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

< /dev/zero tr '\000' '\377' | head -c 18520 > test.bin
Run Code Online (Sandbox Code Playgroud)

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


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

perl -e '$a = "abcde" x 1024; print $a while 1' | head ...
Run Code Online (Sandbox Code Playgroud)

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


Gil*_*il' 13

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

</dev/zero head -c 18520
Run Code Online (Sandbox Code Playgroud)

如果您希望文件填充零以外的单个字节,请将字节值更改为tr. 对于所有位一:

</dev/zero head -c 18520 | tr '\0' '\377'
Run Code Online (Sandbox Code Playgroud)