En la tabla ASCII existe el carácter 'J' que tiene puntos de código en diferentes sistemas de numeración:
Oct Dec Hex Char
112 74 4A J
Es posible imprimir este carácter por un punto de código octal imprimiendo
printf '\112'o echo $'\112'. ¿Cómo imprimo el mismo carácter mediante presentaciones de punto de código decimal y hexadecimal?

Respuestas:
Maleficio:
Dic:
Alternativa para hexadecimal :-)
fuente
awk.Con
zsh:Para obtener un carácter (en el juego de caracteres actual) del punto de código Unicode:
fuente
En general, el shell podría comprender números hexadecimales, oct y decimales en variables, siempre que se hayan definido como
integers:O son el resultado de una "Expansión Aritmética":
Entonces, solo necesita una forma de imprimir el carácter que pertenece a un valor variable.
Pero aquí hay dos formas posibles:
Se necesitan los dos printf, uno para transformar el valor en una cadena hexadecimal y el segundo para imprimir realmente el carácter.
El segundo imprimirá cualquier punto UNICODE (si su consola está configurada correctamente).
Por ejemplo:
Un hombre de nieve
El personaje que tiene una representación utf-8 como
f0 9f 90 aees0x1F42E. Buscarcow face site:fileformat.infoa conseguirlo :Nota : Hay un problema con la forma UNICODE en que para bash antes de 4.3 (corregido en esa versión y hacia arriba), los caracteres entre UNICODE puntos 128 y 255 (en decimal) pueden imprimirse incorrectamente.
Referencias
Cuarto párrafo adentro
PARAMETERSenman bash:Dentro de "EVALUACIÓN ARITMÉTICA" en
man bash:fuente
é(Octal: 351, Dec: 233, Hex: 0xE9) se imprime incorrectamenteprintf '\351'ya que imprime un valor de byte de0xE9siempre. Para un terminal con una codificación deISO-8859-1(y primos) que puede funcionar, pero en terminales codificados utf-8, un valor de byte0xE9debería aparecer como . cont ....\u(que proviene de zsh).Decimal:
Maleficio:
La función puede hacer secuencias:
fuente
Puede usar la biblioteca POSIX Awk stdlib :
fuente
Si tiene una lista de números para convertir y desea evitar una llamada a la función y crear una subshell para cada carácter, puede definir el conjunto ascii de antemano:
Tenga en cuenta que el carácter nulo está excluido, por lo que cada carácter está compensado por 1.
Luego use algo como esto (supone 1 número por línea):
fuente
Aquí están todas las conversiones usando
printf:fuente