Wie zum ausführen von unsigned zu signed Konvertierung in Java?

Sagen, ich lese diese bytes: "6F D4 06 40" von einem Eingabegerät. Die Zahl ist ein Längen-zu Lesen in MilliArcSeconds-format. Das oberste bit (0x80000000) ist im Grunde immer null und wird ignoriert, für diese Frage.

Kann ich leicht umwandeln der bytes an, die ein unsigned integer: 1876166208

Aber wie kann ich konvertieren, dass unsigned-Wert in seine endgültige form des 31-bit-signed-integer?

Bisher alle, die ich mir ausgedacht habe ist:

  1. wenn der Wert & 0x40000000, dann ist es eigentlich negativ, konvertieren es
  2. Wenn es negativ ist, Streifen die Oberseite wenig und etwas zu tun mit der restlichen bits...

Also ich kann sagen, wenn es eine negative Zahl ist, aber um zu wissen, welchen Wert das negative Zahl ist, ich habe etwas zu tun mit den verbleibenden bits - ein Kompliment? Wie mache ich das in Java?

Anderen Weg, um die Frage, wie kann ich konvertieren einer Ganzzahl in einen 31-bit-Ganzzahl in Java?

Danke!

Ich denke, dass ich das falsch verstanden, deine Frage in meiner Antwort. Können Sie sagen, was Sie wollen, dass der Wert der Ganzzahl, basierend auf deinem Beispiel-Eingabe? Sie hat nie gesagt, dass.
Input: "6F D3 FD 45". Output: Etwa -75.366465. Ich sage annähernd, weil ich fand eine Stelle und blieb dort, um Daten zu sammeln und zur gleichen Zeit gemessen, die Position mit einem GPS. Also die Länge oben (-75.366465) sollte in der Nähe sein, aber wahrscheinlich nicht genau den gleichen Wert hat wie die oben genannten hex-bytes konvertiert eine Ganzzahl (und MAS in Grad Umwandlung durchgeführt). ich versuche einen Weg zu finden, zu gehen von die hex-bytes in ein signed int mit Java
MAS Grad: teilen von 3,600,000.
Immer in der Nähe von... Eigentlichen Lesung mit den "negativen etwas" entfernt: "2F D3 FD 45"... vergleichen Sie dies mit dem erwarteten MAS-Wert von -75.366465 "10 2C 00 EA"... die Ersten 22 bits entsprechen, wenn ich flip 1 zu 0 und 0 zu 1 (XOR). Ich denke, das könnte der trick - muss die Reihenfolge aller bits... ich kann das mit einem XOR...
sind Sie richtig. Ich entschuldige mich.

InformationsquelleAutor Brad Hein | 2010-10-14

Schreibe einen Kommentar