iba a escribir esto como un comentario a @ 'S Coombs, pero tenía miedo de que no encajaría y el formato de los comentarios doesn no funciona tan bien
Re:
for h in $(echo "4161" | sed "s/\(..\)/\1 /g"); do printf `echo "\x$h"`;done
agradable para ASCII, pero creo que el estándar para la mayoría de distribuciones en estos días es UTF-8 (y estaba en muchos antes de 2011). Prácticamente ninguno de los anteriores "hace lo correcto" con la entrada UTF-8. Por ejemplo: el uso de una "estrella" Unicode (U + 2605) el código anterior pone a cabo:
> LC_ALL=en_US.UTF-8 ## making this explicit for this example
> star="★"
> hex() {
if ((!$#)); then return; fi
for ((i=0;i<${#1};i++));do printf %02X \'${$1:$i:1};done
}
> hex "$star"
2605
Si desea que los bytes UTF-8 hexagonales reales que componen la estrella, es necesario para establecer primero la configuración regional . Como en:
> LC_ALL=C hex "$star"
E29885
Si ha mezclado la producción (como minúsculas latino 'a'), la estrella (U + 2605 = '★'), y un "Mathematical Sans-serif pequeña A" (U + 1D5BA = ''), y desea los valores de los caracteres, luego debe codificar la salida en función del valor del carácter. Los que están por debajo de 0x7f, pueden imprimirse como hexadecimales (\ x7f en cadenas bash), pero los que están por debajo de ~ 64K necesitan un \ u2605 (para empezar) y el resto por encima de 64K necesitan los \ U {8 dígitos hexadecimales} o \ U0001D5BA para Math-a, o algo así:
> star='★' math_a=''
> locale_hex "a$star$math_a"
\X61\u2605\U0001D5BA
pero esto sería técnicamente ir 'fuera de lugar' para la pregunta original - pero todavía es algo para estar al tanto de & tener en cuenta. Publicar la solución que genera esa salida sería "demasiado OT-text" para mi comodidad (con suerte esta advertencia no se considera demasiado divergente de la pregunta original, ya que tenía 'ord', 'hex' (y 'chr) similares ') funciones que me dieron que funcionó para ascii, que se confundieron seriamente cuando los valores predeterminados UTF-8 se lanzaron a la mezcla.
Si bien las respuestas anteriores están bien para sistemas ascii, estos se están convirtiendo en bestias raras en estos días, especialmente desde la codificación de caracteres predeterminada para HTML5 = UTF-8.
'xxd -p -r AAA', esto no funciona, ¿puede recuperar parámetros directamente desde la línea de comandos? – gdb
no ... y la 'r' se convierte de nuevo en hexadecimal, querrías algo como '' echo 4161 | xxd -r -p' 'o' 'echo Aa | xxd -p '' – Random832