是否有一个很好的Unix命令来转储二进制文件的文本表示?

mon*_*ing 2 c c++ unix binary text

我得到了一些包含整数的二进制文件.是否有一些不错的Unix命令,这将允许我将其转储到没有偏移信息等的终端?

就像是:

double int[4];
while (fread(tmp, sizeof(int), 4, stdin))
    for(int i = 0; i < 4; i++)
        printf("%d\t",tmp[i]);
Run Code Online (Sandbox Code Playgroud)

似乎hexdumpod给了我想要的信息,但输出太冗长了.我只想要内容.

Nor*_*sey 7

要使用标准的Unix工具来解决这类问题,通常需要将一堆工具组合在一起:

od -v -t d4 ~/.profile | awk '{$1 = ""; print}' | fmt -1 | sed 's/^ *//'
Run Code Online (Sandbox Code Playgroud)

所述od印刷品以十进制每个32位字,与前面的偏移.该awk评论删除偏移.该fmt命令强制每行一个整数.该sed命令会从结果中删除前导空格.


Nik*_*sov 6

尝试以下hexdump(1)咒语:

hexdump -v -e '4/4 "%d\t"' file

-v强制打印输出整个文件(不*用于重复行),
-e采用格式字符串'4/4 "%d\t"'告诉hexdump(1)迭代四次,在每次迭代时使用给定printf的掩码打印四个字节.