Bc supporta i calcoli esadecimali?


20

Sto provando a fare un hexcalcolo direttamente con bc, ho già specificato la scala.

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

Ma ottengo ancora uno zero. Cosa potrebbe esserci di sbagliato?


Sebbene tecnicamente non sia una risposta alla tua domanda, potresti prendere in considerazione moo (1) invece di bc (1).

Risposte:


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

Nota che sono supportate solo cifre esadecimali MAIUSCOLE poiché quelle minuscole sarebbero in conflitto con nomi di funzioni e variabili, motivo per cui hai ottenuto 0 nel tuo esempio ( var1 - var2)

Se hai bisogno anche della risposta in esadecimale, imposta la obasevariabile:

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

PS: FYI scalenon è progettato per la base di conversione. Da man bc:

scale defines how some operations use digits after the decimal point.
The default value of scale is 0.

Quindi la vera risposta su "cosa potrebbe esserci di sbagliato" è che bc supporta solo UPPER CASE per le cifre esadecimali, con crediti all'editore Stephane.
Roland

Si noti che è importante impostare obaseprima di impostare ibase. Se si imposta ibaseprima, influisce anche sul valore analizzato obase. cioè ibase = 16; obase = 16;impostato obasesu 0x16 = 22
Arnavion il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.