Я пытаюсь отправить двоичную строку в программу, используя строки в кавычках 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 _ /