Преобразовать символ ascii в шестнадцатеричное представление ascii

Преобразовать символ ascii в шестнадцатеричное представление ascii

Как преобразовать символ ASCII в ASCII HEX в скрипте AWK?

Я хочу цикл по диапазону букв

пример

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

ПРИМЕЧАНИЕ: Я хочу выполнить цикл по диапазону из шестнадцатеричного представления и вывести символ.

решение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()для преобразования десятичного значения, возвращаемого функцией, index()в шестнадцатеричное.

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, и вы увидите значения ASCII для «a», «A» и «!», напечатанные в шестнадцатеричном формате.

решение3

В awk нет функций ord() и chr(), как в Python. Сначала необходимо создать массив в блоке BEGIN, индекс которого — символ ASCII, а значение — десятичное число.

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

Связанный контент