Символ 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 заканчиваются нулем, поэтому предполагаю, что аналогичное ограничение применимо и к этому методу заключения в кавычки.

Есть ли способ отправить ASCII 0 в мою программу?

решение1

Попробуйте использовать printfвместо echo.

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

Связанный контент