Convertir un carácter ascii a representación hexadecimal ascii

Convertir un carácter ascii a representación hexadecimal ascii

¿Cómo convierto un carácter ASCII a ASCII HEX en un script AWK?

Quiero recorrer un rango de letras.

ejemplo

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

NOTA: Quiero recorrer un rango desde la representación hexadecimal e imprimir el carácter.

Respuesta1

Me parece que realmente no necesitastodolos caracteres...

$ 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

Respuesta2

Cree una tabla que contenga todos los caracteres ASCII y utilice el comando interno awk index()para buscar caracteres en la tabla. Luego utilícelo sprintf()para convertir el valor decimal devuelto index()a hexadecimal.

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("!");
}

Coloque este código en el archivo "foo" y ejecútelo awk -f foo < /dev/nully verá los valores ASCII para "a", "A" y "!" impreso en hexadecimal.

Respuesta3

awk no tiene funciones ord(), chr() como python. Primero debe crear una matriz en el bloque BEGIN cuyo índice sea un carácter ascii y el valor sea un número decimal.

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

información relacionada