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
bces. por ejemplo, tomando238862874857408875879219909679752457540como 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"bcno está disponible en todas partes (al menos no en mi Linux integrado).Hexadecimal a decimal:
Decimal a hexadecimal:
fuente
fuente
-v VARes una extensión de bash. No mencionado en la página del manual , revelado solo si uno llamaprintfsin argumentosPerdón por mi culpa, prueba esto ...
Ejemplo:
fuente
printfy loshexcomandos no están disponibles.printfno está disponible?Tratar:
fuente
En
zshpuedes hacer este tipo de cosas:Ejemplo tomado de la
zshpá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 numberLa forma más fácil fue usar la solución con bc , sugerida en la publicación anterior:
$ bc <<< "obase=16; 008" 8fuente
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