NUL 字符和 ANSI-C 引用

NUL 字符和 ANSI-C 引用

我正在尝试使用 ANSI-C 带引号的字符串将二进制字符串发送到程序。这工作正常:

echo $'\x23\x51\x66\x39\x01\x5f\x2f' | cat -v
# output: #Qf9^A_/

但是,如果数据中有 NUL 字符(ASCII 代码 0),它将终止字符串:

echo $'\x23\x00\x66\x39\x01\x5f\x2f' | cat -v
# output: #

我知道 C 语言中的字符串是以 null 结尾的,所以我猜测类似的约束也适用于这种引用方法。

有没有办法可以将 ASCII 0 发送到我的程序?

答案1

尝试使用printf而不是echo.

$ printf "\x23\x00\x66\x39\x01\x5f\x2f" | od -c
0000000   #  \0   f   9 001   _   /

相关内容