Unterstützt bc Hex-Berechnungen?

20

Ich versuche hexdirekt mit zu rechnen bc, die Skala habe ich schon angegeben.

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

Aber ich bekomme immer noch eine Null. Was könnte falsch sein?

Gänseblümchen
quelle
Obwohl dies technisch gesehen keine Antwort auf Ihre Frage ist, möchten Sie möglicherweise moo (1) anstelle von bc (1) in Betracht ziehen .

Antworten:

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

Beachten Sie, dass nur Hexadezimalziffern in GROSSBUCHSTABEN unterstützt werden, da Kleinbuchstaben mit Funktions- und Variablennamen in Konflikt stehen würden. Aus diesem Grund haben Sie in Ihrem Beispiel 0 ( var1 - var2).

Wenn Sie die Antwort auch in hex benötigen, setzen Sie einfach die obaseVariable:

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

PS: FYI scaleist nicht für die Konvertierungsbasis ausgelegt. Von man bc:

scale defines how some operations use digits after the decimal point.
The default value of scale is 0.
eilen
quelle
Die eigentliche Antwort auf die Frage, was falsch sein könnte, ist, dass bc nur UPPER CASE für die hexadezimalen Ziffern unterstützt, mit Credits für den Herausgeber Stephane.
Roland
Beachten Sie, dass es wichtig ist, die Einstellungen vorzunehmen, obasebevor Sie sie vornehmen ibase. Wenn Sie ibasezuerst festlegen , wirkt sich dies auch auf den analysierten Wert aus obase. dh ibase = 16; obase = 16;setzt obaseauf 0x16 = 22
Arnavion