Bc suporta cálculos hexadecimais?

20

Estou tentando fazer um hexcálculo diretamente bc, já especifiquei a escala.

echo 'scale=16;c06b1000-c06a5e78' | bc

Mas ainda recebo zero. O que pode estar errado?

margarida
fonte
Embora não seja tecnicamente uma resposta para sua pergunta, você pode considerar o moo (1) em vez de bc (1).

Respostas:

33
echo 'ibase=16;C06D1000-C06A5E78' | bc
176520

Observe que apenas os dígitos hexadecimais UPPER CASE são suportados, pois os minúsculos entrariam em conflito com os nomes das funções e das variáveis, e é por isso que você obteve 0 no seu exemplo ( var1 - var2)

Se você também precisar da resposta em hexadecimal, defina a obasevariável:

echo 'obase=16;ibase=16;C06D1000-C06A5E78' | bc
2B188

PS: A FYI scalenão foi projetada para a base de conversão. De man bc:

scale defines how some operations use digits after the decimal point.
The default value of scale is 0.
pressa
fonte
Portanto, a resposta real sobre "o que poderia estar errado" é que o bc suporta apenas o caso MAIOR para os dígitos hexadecimais, com créditos para o editor Stephane.
Roland
Observe que é importante definir obaseantes de definir ibase. Se você definir ibaseprimeiro, isso também afetará o valor analisado obase. ou seja, ibase = 16; obase = 16;define obasepara 0x16 = 22
Arnavion