yOn Fri, 28 Jul 2006 9:55pm  -0300, Reinaldo Carvalho wrote:

> Só para ficar registrado...
> 
> Formas práticas de conversão:
> 
> Hexadecimal => Decimal
> $ echo $((16#0000f0050))
> 983120
> $ echo $((0x0000f0050))
> 983120
> $ echo $((16#00050))
> 80
> $ echo $((0x00050))
> 80

Olá Reinaldo, obrigado por enviar os exemplos...


> Só achei essa forma de "Decimal => Hexadecimal" pouco flexivel...
> $ printf "%x\n" 080
> bash: printf: 080: invalid number
> 0

O printf builtin do bash tenta fazer a mesma conversão que as operações 
matemáticas da gramática do shell fazem.  Assim ele tenta converter o 
valor 80 em octal, o que não é um número válido.  Use sempre o 0x.  Um 
número começado por 0 é octal:


> $ printf "%x\n" 0x00080
> 80
> 

Aqui tu disse para o bash (shell dummie, use zsh que ele é capaz de ver 
quando ele é ou não um valor octal quando isto é possível  ;-))


> TODO:
> bitwise com | e ^
> melhorar Decimal => Hexadecimal com printf

  $ printf "%x\n" $((0x8010 | 0x0108))
  8118

OBS: Estou usando números fáceis de se fazer a conversão mental.


O ^ é o | exclusivo,

  $ printf "%x\n" $((0x1138 ^ 0x807f))
  9140

1 exclusivo 8 é 9 (faça também printf %x $((2#0001 ^ 2#1000)))
1 exclusivo 0 é 1 (faça também printf %x $((2#0001 ^ 2#0000)))
3 exclusivo 7 é 4 (faça também printf %x $((2#0101 ^ 2#0111)))
8 exclusivo f é 7 (faça também printf %x $((2#1000 ^ 2#1111)))


-- 
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

 



Responder a