bc: Warum gibt `ibase=16; obase=10; FF` FF zurück und nicht 255?

bc: Warum gibt `ibase=16; obase=10; FF` FF zurück und nicht 255?

Ich habe es verwendet bc, um Zahlen vom Binär- ins Hexadezimalsystem, vom Oktal- ins Dezimalsystem usw. umzuwandeln.

Im folgenden Beispiel habe ich versucht, Zahlen zur Basis 16 (Hexadezimalzahlen) in Binär-, Oktal- und Dezimalzahlen umzuwandeln.

Bei den ersten beiden Versuchen habe ich keine Probleme.

$ echo 'ibase=16; obase=2; FF' | bc  
11111111
$ echo 'ibase=16; obase=8; FF' | bc 
377

Aber als ich versuchte, eine Zahl mit Basis 16 (Hexadezimalzahl) in eine Zahl mit Basis 10 (Dezimalzahl) umzuwandeln, erhielt ich eine falsche Antwort. Die Antwort sollte lauten255

$ echo 'ibase=16; obase=10; FF' | bc 
FF

Antwort1

Sobald dies ibase=16erledigt ist, werden weitere Zahlen hexadezimal eingegeben.einschließlich10 obase=10stellt den Dezimalwert 16 dar. Legen Sie also entweder vorher oder nachher die Basis fest, und verwenden Sie dabei die neue Eingabebasis (jetzt hexadezimal):

$ echo 'obase=10; ibase=16; FF' | bc
255
$ echo 'ibase=16; obase=A; FF' | bc
255

verwandte Informationen