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