Em um script de shell do UNIX, o que posso usar para converter números decimais em hexadecimais? Achei que o od faria o truque, mas não estou percebendo que estou alimentando com representações ASCII de números.
printf? Bruto! Usando por agora, mas o que mais está disponível?
Respostas:
Se você deseja filtrar um arquivo inteiro de inteiros, um por linha:
fonte
ibase=16
. Você pode querer ler o manual em bc para mais detalhes.Tentou
printf(1)
?Provavelmente, existem maneiras de fazer isso com funções integradas em todos os shells, mas seria menos portátil. Eu não verifiquei as especificações sh do POSIX para ver se ele tem tais recursos.
fonte
bc
é. por exemplo, tomando238862874857408875879219909679752457540
como entrada, printf nos dá "Resultado muito grande". o método BC funciona muito bem para coisas maiores do que int / long / bigint padrãoprintf "%X"
com X maiúsculo.bc
não está disponível em todos os lugares (pelo menos não no meu Linux embarcado).Hexidecimal para decimal:
Decimal para hexadecimal:
fonte
fonte
-v VAR
é uma extensão do bash. Não mencionado na página do manual , revelado apenas se alguém chamarprintf
sem argumentosDesculpe minha culpa, tente isso ...
Exemplo:
fonte
printf
e oshex
comandos não estão disponíveis.printf
não está disponível?Experimentar:
fonte
Em
zsh
você pode fazer este tipo de coisa:Exemplo retirado da
zsh
página de documentos sobre avaliação aritmética .Eu acredito que o Bash tem recursos semelhantes.
fonte
No meu caso, me deparei com um problema com o uso da solução printf:
$ printf "%x" 008 bash: printf: 008: invalid octal number
A maneira mais fácil era usar a solução com bc , sugerida no post superior:
$ bc <<< "obase=16; 008" 8
fonte
fonte
fonte
Este não é um script de shell, mas é a ferramenta cli que estou usando para converter números entre bin / oct / dec / hex:
fonte