Unix 쉘에서 (명령 없이 ) ASCII 코드(예: -
또는 _
등 )를 16진수 표현으로 변환하고 싶습니다 (예: => )..
bc
-
%2d
어떤 아이디어가 있나요?
답변1
printf
C 함수를 시뮬레이션하는 도구 가 일반적으로 존재 /usr/bin/printf
하지만 많은 쉘에서도 이에 대한 내장 기능을 구현합니다. 이를 사용하여 %02x
문자의 16진수 표현을 얻을 수 있지만 전달하는 문자열에 작은따옴표(편집하다:처음에 작은 따옴표를 추가하는 것만으로도 충분하다는 것이 밝혀졌습니다.):
printf "%%%02x\n" "'-" # Outputs %2d
편의를 위해 다음과 같이 셸 함수를 만들 수 있습니다.
function hex() {
printf "%%%02x\n" "'$1"
}
hex - # Outputs %2d
hex _ # Outputs %5f
hex . # Outputs %2e
답변2
xxd
vim-common
패키지의 일부로 제공되는 16진수 덤프 유틸리티입니다.
이 유틸리티에는 연속적인 "일반/포스트스크립트" 16진수 덤프 스타일을 출력하는 편리한 옵션이 있습니다. 이것은 -p
대문자 16진수 숫자를 출력하는...로 쉽게 되돌릴 수 있습니다.-r
-u
$ echo -n "M" |xxd -p # 1 ASCII char= 1 UTF-8 byte; Unicode Codepoint: U+0041
4d
$ echo -n "〶" |xxd -p -u # 1 CJK char= 3 UTF-8 bytes; Unicode Codepoint: U+3036
E380B6
$ echo -n "Dump a string" |xxd -p -u
44756D70206120737472696E67
$ echo -n "Dump and Revert" |xxd -p |xxd -r
Dump and Revert
답변3
노력하다OD:
$ echo -n "-_." | od -A n -t x1
2d 5f 2e
-A n
오프셋을 인쇄하지 않음을 나타냅니다. -t x1
이는 출력을 1바이트 16진수 정수로 형식화함을 의미합니다.