On Fri, 28 Jul 2006 8:14pm -0300, Reinaldo Carvalho wrote:
> Felipe,
>
> > % echo $((0x8001 & 0xff00))
> > 32768
> >
> Não entendi como isso funciona.. pode dar mais exemplos?
Reinaldo,
Desculpas, pensei que o exemplo estava claro. Eu estou fazendo uma
operação /and/ bitwise, como em C, C++, ou similares. O resultado que eu
estou obtendo é em decimal. As operações bitwise suportadas pelos shells
são &, ^, |, e shifts para esquerda ou direita.
Eu enviei uma outra mensagem para esta mesma thread que tem mais exemplos
sobre isto, talvez eles ajudem. Fale se tiver mais alguma dúvida sobre a
aplicação dos operadores. Observação: A precedência deles é a mesma que
em C/C++.
> > % echo $((16#8000))
> > 32768
> >
> Perfeito, com certeza a melhor maneira Hexa => Decimal
> Existe algo semelhante para Decimal => Hexa ?
Oh, sim. Dependendo do shell. Em zsh há uma interface matemática simples
que faz o inverso de base#, que é [#base]. Por exemplo, invertendo o
exemplo anterior:
% print $(([#16]32768))
16#8000
Ou no formato C...
% setopt C_BASES
% print $(([#16]32768))
0x8000
A opção em outros shells e zsh também, genérica, é usar printf builtin dos
shells (lembra-se que há o comando printf também). Se tu estiveres usando
bash, podes usar a opção -v, como nos exemplos que seguem:
$ printf "%x\n" 32768
8000
Ou
$ printf -v convertido "%x\n" 32768
Agora convertido tem o valor convertido.
$ printf "Valor convertido: %d\n" $convertido
Valor convertido: 8000
Recomendo o uso de zsh, que tem todo o suporte a conversões de bases tudo
buildin (base#, base##, [#base], [##base], etc). Boa sorte com os teus
trabalhos com tc/iproute, este assunto é realmente interessante ;-)
Bom final-de-semana,
--
Felipe Kellermann
---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil
Links do Yahoo! Grupos