2015-12-28 5 views
7

Ich habe, was ich denke, es ist ein IEEE754 mit einfacher oder doppelter Genauigkeit (nicht sicher), und ich möchte es konvertieren, um auf PHP in Dezimalzahlen.754 IEEE Gleitkommadar-

Gegeben 4 Hex-Wert (der in Little Endian-Format sein könnte, also im Grunde umgekehrte Reihenfolge) 4A,5B,1B,05 Ich muss es in einen Dezimalwert konvertieren, die ich sehr nahe an 4724.50073 sein werde.

Ich habe einige Online-Konverter versucht, aber sie sind weit von dem Ergebnis zu erwarten, damit ich klar etwas fehlt bin.

Wenn ich echo 0x4A; ich 74 und die anderen sind 91, 27 und 5. Nicht sicher, wo es nehmen von hier ...

+0

Was sind die genauen Daten, die Sie haben? – cmorrissey

+0

@cmorrissey Sie sollen GPS-Koordinaten sein, sagt der Beschreibung in der docs 'Alle Gleitkommazahlen in IEEE754 Einzel- oder Doppel precision' übertragen werden dann bekomme ich diese genauen Werte' 4A, 5B, 1B, 05', die ich weiß, dass es ist '4724.50073', nur nicht sicher, wie man dorthin kommt. – matt

+1

Sind Sie sich sicher, dass die Hexadezimalwerte und der von Ihnen angegebene Dezimalwert übereinstimmen? Ich sehe, dass es in der binären Darstellung von 4724.50073 drei aufeinanderfolgende 1 Ziffern gibt, egal, ob Sie die Dezimalstellen nach dem Punkt nehmen oder nicht. Und es gibt keine solche Folge von Binärziffern in den Hex-Zahlen, egal wie Sie sie bestellen. – trincot

Antwort

1

zu konvertieren es zu schwimmen, verwenden unpack. Wenn die Byte-Reihenfolge falsch ist, müssen Sie sie vor dem Entpacken selbst umkehren. 4 Byte (32 Bit) bedeutet normalerweise, dass es ein Float ist, 8 für Double.

$bin = "\x4A\x5B\x1B\x05"; 
$a = unpack('f', strrev($bin)); 
echo $a[1]; // 3589825.25 

Ich sehe keine Möglichkeit, wie diese Karten zu 4724.50073 direkt tho. Ohne weitere Testdaten oder Herstellerhandbuch ist diese Frage nicht vollständig zu verantworten.

Spekulation: nach der Größe der Koordinate zu beurteilen, ist es wahrscheinlich eine Art Projektion (XYZ oder Mercator), die dann in WGS84 oder was auch immer Sie benötigen umgewandelt werden kann. Leider gibt es keine Möglichkeit, dies zu überprüfen, da Sie weder Längen- noch Breitengrad angegeben haben.

Verwandte Themen