En un script de shell de UNIX, ¿qué puedo usar para convertir números decimales en hexadecimales? Pensé que od haría el truco, pero no me doy cuenta de que lo estoy alimentando con representaciones ASCII de números.
printf? ¡Bruto! Usándolo por ahora, pero ¿qué más hay disponible?
Respuestas:
Si desea filtrar un archivo completo de enteros, uno por línea:
fuente
ibase=16
. Es posible que desee leer el manual sobre bc para obtener más detalles.Intentado
printf(1)
?Probablemente hay formas de hacer eso con funciones integradas en todos los shells, pero sería menos portátil. No he comprobado las especificaciones de POSIX sh para ver si tiene tales capacidades.
fuente
bc
es. por ejemplo, tomando238862874857408875879219909679752457540
como entrada, printf nos da "Resultado demasiado grande". el método BC funciona muy bien para cosas más grandes que un int / long / bigint estándarprintf "%X"
bc
no está disponible en todas partes (al menos no en mi Linux integrado).Hexadecimal a decimal:
Decimal a hexadecimal:
fuente
fuente
-v VAR
es una extensión de bash. No mencionado en la página del manual , revelado solo si uno llamaprintf
sin argumentosPerdón por mi culpa, prueba esto ...
Ejemplo:
fuente
printf
y loshex
comandos no están disponibles.printf
no está disponible?Tratar:
fuente
En
zsh
puedes hacer este tipo de cosas:Ejemplo tomado de la
zsh
página de documentos sobre evaluación aritmética .Creo que Bash tiene capacidades similares.
fuente
En mi caso, me encontré con un problema al usar la solución printf:
$ printf "%x" 008 bash: printf: 008: invalid octal number
La forma más fácil fue usar la solución con bc , sugerida en la publicación anterior:
$ bc <<< "obase=16; 008" 8
fuente
fuente
fuente
Este no es un script de shell, pero es la herramienta cli que estoy usando para convertir números entre bin / oct / dec / hex:
fuente