如何在bash中创建仅包含空格的十六进制字符的文件的十六进制转储?

Dav*_*wik 174 linux bash hex

如何使用bash在Linux中创建二进制文件的未修改十六进制转储?在odhexdump转储命令都插入空格,这是不理想的.

有没有办法简单地写一个长字符串,其中包含输出中的所有十六进制字符,减去空格或换行符?

mar*_*k4o 240

xxd -p file

或者如果你想要一条线:

xxd -p file | tr -d '\n'

  • fyi要反转这个过程:xxd -r -ps hexascii.txt文件(无论是否有换行都可以) (13认同)

Mic*_*bus 87

格式化字符串可以使hexdump完全按照您的意愿运行(完全没有空格,逐字节):

hexdump -ve '1/1 "%.2x"'
Run Code Online (Sandbox Code Playgroud)

1/1表示"每个格式应用一次并占用一个字节",并且"%.2x"是实际的格式字符串,如printf.在这种情况下:2个字符的十六进制数字,如果更短则前导零.

  • 你需要一个`-v`或它会丢弃重复的字节并用星号替换它们. (7认同)
  • 我想知道hexdump本身是否能够将换行符(仅)附加到输出的末尾。(明显的附加符; echo使其无法用作bash别名) (2认同)
  • 我的别名:`alias to_hex =“ hexdump -ve'1/1 \”%。2x \“'&& echo”` (2认同)

Don*_*ows 22

它似乎取决于版本的细节od.在OSX上,使用此:

od -t x1 -An file |tr -d '\n '
Run Code Online (Sandbox Code Playgroud)

(那是打印类型的十六进制字节,没有地址.当然,之后删除了空格.)

  • 我还会在这种情况下添加 `-v`,否则它会跳过带有 `*` 的重复。 (3认同)

Ala*_*avi 9

Perl单线:

perl -e 'local $/; print unpack "H*", <>' file
Run Code Online (Sandbox Code Playgroud)