ASCII 문자를 ASCII 16진수 표현으로 변환

ASCII 문자를 ASCII 16진수 표현으로 변환

AWK 스크립트에서 ASCII 문자를 ASCII HEX로 어떻게 변환합니까?

문자 범위별로 반복하고 싶습니다.

for(i="a"; i<"g"; i++)
 print i;

참고: 16진수 표현의 범위를 기준으로 반복하고 문자를 인쇄하고 싶습니다.

답변1

내가 보기엔 넌 별로 필요 없을 것 같아모두캐릭터...

$ awk 'BEGIN { chartable="abcdefghij" ; for (i=index(chartable, "a"); i<index(chartable, "g"); i++) { print substr(chartable, i, 1) } }'
a
b
c
d
e
f

답변2

모든 ASCII 문자를 포함하는 테이블을 만들고 awk 내장 기능을 사용하여 index()테이블의 문자를 검색합니다. 그런 다음 sprintf()에서 반환된 10진수 값을 index()16진수로 변환하는 데 사용합니다.

BEGIN {
    for (i = 0; i < 128; i++) {
       table = sprintf("%s%c", table, i);
    }
}

function chartohex (char) {
    return sprintf("0x%x", index(table, char));
}

END { # examples
   print chartohex("a");
   print chartohex("A");
   print chartohex("!");
}

이 코드를 "foo" 파일에 넣고 실행하면 awk -f foo < /dev/null"a", "A" 및 "!"에 대한 ASCII 값이 표시됩니다. 16진수로 인쇄됩니다.

답변3

awk에는 Python과 같은 ord(), chr() 기능이 없습니다. 먼저 인덱스가 ASCII 문자이고 값이 10진수인 BEGIN 블록에 배열을 만들어야 합니다.

awk 'BEGIN {
 for (i = 0; i <= 255; i++) {
    t = sprintf("%c", i)
    a[t] = i
}

for( i=a["a"]; i < a["g"]; i++)
    print sprintf("%c",i)
}'
a
b
c
d
e
f

관련 정보