Dans un script shell UNIX, que puis-je utiliser pour convertir des nombres décimaux en hexadécimal? Je pensais qu'od ferait l'affaire, mais je ne réalise pas que je lui donne des représentations ASCII de nombres.
printf? Brut! Vous l'utilisez pour le moment, mais qu'est-ce qui est disponible?
Réponses:
Si vous souhaitez filtrer un fichier entier d'entiers, un par ligne:
la source
ibase=16
. Vous voudrez peut-être lire le manuel sur bc pour plus de détails.Essayé
printf(1)
?Il existe probablement des moyens de le faire avec des fonctions intégrées dans tous les shells, mais ce serait moins portable. Je n'ai pas vérifié les spécifications POSIX sh pour voir s'il a de telles capacités.
la source
bc
est. par exemple, en prenant238862874857408875879219909679752457540
comme entrée, printf nous donne "Résultat trop grand". la méthode BC fonctionne très bien pour les choses plus grandes qu'un int / long / bigint standardprintf "%X"
avec X majuscule.bc
n'est pas disponible partout (du moins pas sur mon Linux embarqué).Hexidécimal à décimal:
Décimal à hexadécimal:
la source
la source
-v VAR
est une extension bash. Non mentionné dans la page de manuel , révélé uniquement si on appelleprintf
sans argumentsDésolé de ma faute, essayez ceci ...
Exemple:
la source
printf
et leshex
commandes ne sont pas disponibles.printf
pas disponible?Essayer:
la source
Dans
zsh
vous pouvez faire ce genre de chose:Exemple tiré de la
zsh
page de documentation sur l'évaluation arithmétique .Je pense que Bash a des capacités similaires.
la source
Dans mon cas, je suis tombé sur un problème avec l'utilisation de la solution printf:
$ printf "%x" 008 bash: printf: 008: invalid octal number
Le moyen le plus simple était d'utiliser la solution avec bc , suggérée dans l'article supérieur:
$ bc <<< "obase=16; 008" 8
la source
la source
la source
Ce n'est pas un script shell, mais c'est l'outil cli que j'utilise pour convertir des nombres entre bin / oct / dec / hex:
la source