Frage von Groovling, 9

Wie eine Zahl von 2-Komplement Hexadezimal in signed int umwandeln und dabei 2 Bits ignorieren?

Hallo!

Ich bekomme von einem Sensor eine 16-bit 2-Komplement Hexadezimalzahl.

Der eigentliche Wert ist jedoch nur 14 bit groß. Es gibt schöne Python-Funktionen die von 2-Komplement Hex auf signed Int umwandeln, alles was ich bislang versucht habe funktioniert aber nur, wenn die Zahl die interpretiert werden soll genauso viele Bits hat wie das Ergebnis. Ich möchte jedoch die ersten beiden Bits "ignorieren".

Z.B. "E002" in Hex = 1110 0000 0000 0010 in Binär. ich brauche aber 10 0000 0000 0010.

Ergeben soll das ganze nach der Umrechnung die Zahl -8190...

Bin für jede Hilfe dankbar.

Antwort
von PerfectMuffin, 6

Erstmal ist hexadezimal nichts als eine Schreibweise.

Eine Zahl direkt in ein kleineres Format abzuspeichern schneidet normalerweise die ersten bits ab, aber man kann auch über bitweises UND sicher gehen 11111010 UND 00001111 = 00001010

Kommentar von Groovling ,

Hi!

Danke schonmalf ür deine Antwort, allerdings hänge ich immernoch etwas... wenn ich mit & verkette, muss ich ja die Funktionen zur Umwandlung umschreiben, das bekomme ich nicht hin...

Kann ich die Zahl auch einfach als 14bit speichern und dann rechnen?

Kommentar von PerfectMuffin ,

Ich kann kein Python, ich verwende nur allgemeines Programmierwissen. In Java würde ich einfach per cast die Extrastellen entfernen.

Aber 14bit ist eine sehr unsinnige Größe, dass ein Byte 8bit sind. Warum nimmst du extra einen Umweg um zwei bits zu verschwenden?

Keine passende Antwort gefunden?

Fragen Sie die Community