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   _   /

関連情報