Ich habe ein Problem, die hexadezimale Konvertierung in PHP zu verstehen.
Jetzt habe ich die Nummer -2.09
. Ich möchte es in Hexa konvertieren, aber die Länge des Ergebnisses sollte 4 sein. Also sollte das Ergebnis sein FFFE
, aber es gibt mir FFFFFFFE
stattdessen.
Welche Funktion soll verwendet werden, um mir nur 4 Ziffern hexadezimal zu geben?
Derzeit verwende ich nur diese Funktion um zu konvertieren:
dechex(-2)
Antworten:
0 für die Antwort № 1Wenn Sie absolut sicher sind, dass Sie nur 4 Bytes benötigen, um Ihre Nummer zu speichern, können Sie verwenden substr
um das benötigte Teil zu erhalten:
$a = dechex(-2);
=> "fffffffffffffffe"
substr($a, -4);
=> "fffe"
0 für die Antwort № 2
Eine negative Zahl benötigt mehr Bits, um ihren Wert in hexadezimaler Version zu speichern, da auch die -
Zeichen muss gespeichert werden.
Sie können also die Nummer nicht speichern -2.09
in einer hexadezimalen Darstellung von 4 Längen, noch die -2
Nummer:
Beispiel:
echo dechex((float)-2.09);
echo "n";
echo dechex(-2);
Ausgabe:
fffffffe
fffffffe