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: [EMAIL PROTECTED] --------------------------------------------------------------------- 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 <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
