我的问题是我需要创建一个具有这个确切字节的文件:48,00,49,00
我不能使用C(因为我无法部署任何东西,没有perl,没有其他脚本语言.我尝试使用awk,在桌面上它确实有效:
# awk 'BEGIN{ printf "%c%c%c%c", 48, 00, 49, 00 }' | hexdump
0000000 0030 0031
0000004
Run Code Online (Sandbox Code Playgroud)
但是目标平台正在运行busybox v1.13.2,并且此代码在那里不起作用.那里的awk版本没有输出ascii"0"(所有其他值都没问题).
你有什么建议?
yoh*_*eau 27
您可以使用以下命令:
echo -n -e \\x48\\x00\\x49\\x00 > myfile
Run Code Online (Sandbox Code Playgroud)
POSIX AWK标准表示将%0传递给带有%c格式的AWK的printf会导致未指定的行为.但是... POSIX echo也非常有限,虽然八进制和十六进制说明符(和-n)可以在GNU echo和BASH内置...但它们可能无法在任何地方工作.为了最大限度地提高在所有POSIX系统上获得一致行为的可能性,最好使用shell命令行的printf而不是其中任何一个.
$ printf '\060\000\061\000' | od -An -tx1
30 00 31 00
Run Code Online (Sandbox Code Playgroud)
这对我来说很奇怪......你可能想要输出0x48,0x00,0x49,0x00--这看起来像八进制中的漂亮导频数:
$ printf '\110\000\111\000' | od -An -tx1
48 00 49 00
Run Code Online (Sandbox Code Playgroud)
你可以尝试回声,这也允许任意ascii字符(这些数字是八进制数字).
echo -n -e \\0060\\0000\\0061\\0000 | hexdump
Run Code Online (Sandbox Code Playgroud)