Por que 'bc' está ignorando meu 'obase'?

2
>>> bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type 'warranty'. 
ibase = 16 
obase = 56
BE753DE5C17F1B6C9F5D1E8A628B74B0FFC4A7
 13 54 52 19 83 18 71 14 32 84 08 11 54 04 20 50 49 70 30 00 29 44 7\
7 33

A entrada está obviamente em hexadecimal. Agora eu suponho que a saída deva ser representações decimais de "dígitos" na base 56. Mas então o maior pedaço de saída deve ser 55, certo? Então, por que vejo um "83" e um "84"?

    
por Alan H. 30.03.2012 / 21:40

1 resposta

5

Declarar ibase de 16 coloca bc no modo hexadecimal, portanto, sua próxima linha:

obase = 56

é, na verdade, interpretado como hexadecimal: 0x56 = 86 em decimal, e é por isso que seus "dígitos" de saída incluem valores até 85 não maiores que 85.

Troca a ordem em que você declara ibase e obase resolve isso:

obase = 56
ibase = 16
BE753DE5C17F1B6C9F5D1E8A628B74B0FFC4A7
 01 27 46 38 00 54 21 49 15 55 31 13 08 39 08 26 31 35 14 01 25 24 0\
6 13 11 36 07

e:

38
 01 00
    
por 30.03.2012 / 22:32