Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hex xxd-不带xxd的r_Hex_Sh_Xxd - Fatal编程技术网

Hex xxd-不带xxd的r

Hex xxd-不带xxd的r,hex,sh,xxd,Hex,Sh,Xxd,我在CentOS 5.5的缩小版上运行,没有很多可用的工具。没有xxd、bc或hd。很遗憾,我无法安装任何其他实用程序。我有od、dd、awk和bourne shell(不是bash)。在一个正常的环境中,我要做的是相对简单的。基本上,我有一个数字,比如100000,我需要将它的二进制表示形式存储在一个文件中。通常,我会做一些像 printf '%x' "100000" | xxd -r -p > file.bin 如果您查看文件的十六进制转储,您将正确地看到表示为186A0的数字 是否

我在CentOS 5.5的缩小版上运行,没有很多可用的工具。没有xxd、bc或hd。很遗憾,我无法安装任何其他实用程序。我有od、dd、awk和bourne shell(不是bash)。在一个正常的环境中,我要做的是相对简单的。基本上,我有一个数字,比如100000,我需要将它的二进制表示形式存储在一个文件中。通常,我会做一些像

printf '%x' "100000" | xxd -r -p > file.bin
如果您查看文件的十六进制转储,您将正确地看到表示为186A0的数字


是否有一个等效的工具,我可以用有限的工具拼凑起来?我尝试过的几乎所有东西都存储数字的ascii值。

您可以使用printf、awk和shell的组合来实现这一点

#!/usr/bin/env awk
# ascii_to_bin.awk
{
    # Pad out the incoming integer to a full byte
    len = length($0);
    if ( (len % 2) != 0) {
        str = sprintf("0%s", $0);
        len = len + 1;
    }
    else {
        str = $0;
    }
    # Create your escaped echo string
    printf("echo -n -e \"");
    for(i=1;i<=len;i=i+2) {
        printf("\\\\x%s", substr(str, i, 2));
    }
    printf("\"");
}

如果您知道目标二进制长度,只需执行
printf“%0nX”
n
是目标大小)并删除
(len%2)
逻辑。

谢谢,Frank。非常感谢。
$ printf '%x' "100000" | awk -f ascii_to_bin.awk | /bin/sh > output.bin