¿Bc admite cálculos hexadecimales?

20

Estoy tratando de hacer un hexcálculo directamente con bc, ya especifiqué la escala.

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

Pero todavía obtengo un cero. ¿Qué podría estar mal?

margarita
fuente
Aunque técnicamente no es una respuesta a su pregunta, es posible que desee considerar moo (1) en lugar de bc (1).

Respuestas:

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

Tenga en cuenta que solo se admiten dígitos hexadecimales MAYÚSCULAS, ya que los minúsculos entrarían en conflicto con los nombres de funciones y variables, por lo que obtuvo 0 en su ejemplo ( var1 - var2)

Si también necesita la respuesta en hexadecimal, simplemente configure la obasevariable:

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

PD: FYI scaleno está diseñado para la conversión de base. De man bc:

scale defines how some operations use digits after the decimal point.
The default value of scale is 0.
prisa
fuente
Entonces, la verdadera respuesta sobre 'qué podría estar mal' es que bc solo admite MAYÚSCULAS para los dígitos hexadecimales, con créditos para el editor Stephane.
Roland
Tenga en cuenta que es importante configurar obaseantes de configurar ibase. Si configura ibaseprimero, también afecta el valor analizado obase. es decir, se ibase = 16; obase = 16;establece obaseen 0x16 = 22
Arnavion