이런 종류의 문자열이 많이 있는데 아스키로 변환하는 명령을 찾고 싶어서 echo -e
와 od
로 시도했지만 작동하지 않았습니다.
0xA7.0x9B.0x46.0x8D.0x1E.0x52.0xA7.0x9B.0x7B.0x31.0xD2
이 코드는 0xA7.0x9B.0x46.0x8D.0x1E.0x52.0xA7.0x9B.0x7B.0x31.0xD2
텍스트를 동등한 값을 가진 11바이트 스트림으로 변환합니다. 이 바이트들은 표준 출력에 기록됩니다.
TESTDATA=$(echo '0xA7.0x9B.0x46.0x8D.0x1E.0x52.0xA7.0x9B.0x7B.0x31.0xD2' | tr '.' ' ')
for c in $TESTDATA; do
echo $c | xxd -r
done
다른 사람들이 지적했듯이, 이렇게 하면 지정된 바이트가 아스키가 아니라는 단순한 이유 때문에 인쇄 가능한 아스키 문자열이 생성되지 않습니다. 이 문자열을 어떻게 얻었는지에 대한 자세한 정보를 게시해야 도움을 드릴 수 있습니다.
작동 방식: xxd -r은 16진수 데이터를 바이너리로 변환합니다(역방향 헥스덤프처럼). xxd는 각 줄이 해당 줄의 첫 번째 문자의 인덱스 번호로 시작해야 합니다(헥스덤프를 실행하여 각 줄이 어떻게 인덱스 번호로 시작하는지 확인해보세요). 우리의 경우 각 실행에는 한 줄만 있으므로 이 숫자가 항상 0이 되기를 원합니다. 운 좋게도 우리 데이터에는 0x 표기법의 일부로 모든 문자 앞에 0이 이미 있습니다. 소문자 x는 xxd에서 무시되므로 각 0xhh 문자를 xxd로 파이프하고 작업을 수행하기만 하면 됩니다.
tr은 마침표를 공백으로 변환하여 for가 이를 올바르게 분할하도록 합니다.
이 같은 일이 사용할 수 있습니다.
<! - 언어: > 랑 없음 -;
$ cat test_file.txt
54 68 69 73 20 69 73 20 74 65 78 74 20 64 61 74 61 2e 0a 4f 6e 65 20 6d 6f 72 65 20 6c 69 6e 65 20 6f 66 20 74 65 73 74 20 64 61 74 61 2e
$ for c in `cat test_file.txt`; do printf "\x$c"; done;
This is text data.
One more line of test data.
Utf-8 값을 제공한 값은 있다. 이 어레이에는 설정하면 다음과 같다.
declare -a ARR=(0xA7 0x9B 0x46 0x8D 0x1E 0x52 0xA7 0x9B 0x7B 0x31 0xD2)
각 값마다 문자 텍스트 인쇄하려면 것으로 분석되었다.
for ((n=0; n < ${#ARR[*]}; n++)); do echo -e "\u${ARR[$n]//0x/}"; done
수율 및 출력이 몇 인쇄가능 문자 및 인쇄 불가능한 일부 문자를 표시할 수 있습니다.
일반 텍스트 변환 hex 값을 사용하여 '에코' 명령:
echo -e "\x<hex value here>"
그리고 utf-8 로 변환하기 위한 텍스트 값을 사용하여 '에코' 명령:
echo -e "\u<UTF-8 value here>"
'에코' 를 사용하여 텍스트 변환 후 옥탈칩을 명령:
echo -e "\0<octal value here>"
값을 가질 때, 익숙한 인코딩입니다 너회가 aren& # 39 시간 t, 시행하십시오 체크아웃합니다 일반 인코딩입니다 구성표과 범위의 값을 결정하는 데 인코딩입니다 속합니다. 그럼 변환을 통해 스냅되지 있습니다.