Converter um caractere ascii em representação hexadecimal ascii

Converter um caractere ascii em representação hexadecimal ascii

Como faço para converter um caractere ASCII em ASCII HEX em um script AWK?

Eu quero fazer um loop por um intervalo de letras

exemplo

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

NOTA: Quero fazer um loop por um intervalo da representação hexadecimal e imprimir o caractere.

Responder1

Parece-me que você realmente não precisatodosos personagens...

$ 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

Responder2

Construa uma tabela contendo todos os caracteres ASCII e use o awk integrado index()para pesquisar caracteres na tabela. Em seguida, use sprintf()para converter o valor decimal retornado por index()em 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 no arquivo "foo" e execute awk -f foo < /dev/nulle você verá os valores ASCII para "a", "A" e "!" impresso em hexadecimal.

Responder3

awk não possui funções ord(), chr() como python. você deve primeiro criar um array no bloco BEGIN cujo índice é um caractere ASCII e o valor é um 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

informação relacionada