it-swarm-es.tech

Convierta el código ascii a hexadecimal en el script de UNIX Shell

Me gustaría convertir ASCII código (como - o _ o ., etc.) a la representación hexadecimal en el shell de Unix (sin el comando bc), por ejemplo: - => %2d.

¿Algunas ideas?

7
Olivier DUVAL

Hay una herramienta printf que simula la función C; normalmente está en /usr/bin/printf, pero muchos shells también implementan funciones integradas. Puedes usar %02x para obtener la representación hexadecimal de un carácter, pero debe asegurarse de pasar una cadena que incluya el carácter entre comillas simples (Editar: resulta solo una comilla simple al principio es suficiente):

printf "%%%02x\n" "'-"   # Outputs %2d

Puede hacer que una función Shell sea conveniente:

function hex() {
    printf "%%%02x\n" "'$1"
}

hex -   # Outputs %2d
hex _   # Outputs %5f
hex .   # Outputs %2e
13
Michael Mrozek

Prueba od :

$ echo -n "-_". | od -A n -t x1

2d 5f 2e

-A n significa no imprimir compensaciones y -t x1 significa que el tipo de entrada es entero hexadecimal de 1 byte.

4
Cristian Ciupitu

xxd es una utilidad de volcado hexadecimal que se envía como parte de vim-common paquete
Tiene un útil -p opción que genera un estilo hexdump 'simple/postscript' continuo. Esto se puede revertir fácilmente mediante -r... -u dará salida a dígitos hexadecimales en mayúsculas.

$ echo -n "M" |xxd -p    # 1 ASCII char= 1 UTF-8 byte; Unicode Codepoint: U+0041
4d

$ echo -n "〶" |xxd -p -u # 1 CJK char= 3 UTF-8 bytes; Unicode Codepoint: U+3036  
E380B6

$ echo -n "Dump a string" |xxd -p -u  
44756D70206120737472696E67

$ echo -n "Dump and Revert" |xxd -p |xxd -r  
Dump and Revert
2
Peter.O