Converter um caractere ascii para uma representação hexadecimal ascii

0

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

Eu quero loop por um intervalo de letra

exemplo

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

NOTA: Eu quero um loop por um intervalo a partir da representação hexadecimal e imprimo o caracter.

    
por user751132 02.05.2012 / 02:25

3 respostas

1

Parece-me que você não precisa realmente de todos os 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
    
por 02.05.2012 / 02:55
0

Crie uma tabela contendo todos os caracteres ASCII e use o awk builtin index() para caracteres de pesquisa na tabela. Em seguida, use sprintf() para converter o valor decimal retornado por index() para 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/null e você verá os valores ASCII para "a", "A" e "!" impresso em hexadecimal.

    
por 02.05.2012 / 06:34
0

o awk não tem funções ord (), chr () como python. você tem que primeiro fazer o array no bloco BEGIN, cujo índice é o caractere ascii e o valor é o 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
    
por 15.06.2018 / 16:47

Tags