2016-08-01 9 views
1

Betrachtet man die Ausgabe der folgenden Anweisung in PHPString-Encoding-Format Name

hex2bin(dechex(4112)) 

und die Ausgabe für diesen

"\020\020" 

Ich bin gekommen, um zu verstehen, dass dies die Oktaldarstellung der Hex-Darstellung des obigen Dezimalwerts (4112 ->0x1010), wobei jeder Oktalabschnitt zwischen den umgekehrten Schrägstrichen liegt. Daher werden drei Oktalziffern verwendet, um zwei Hexadezimalziffern darzustellen. Hier ist die 0x10 übersetzt 020 in Oktal, so dass wir \020\020 für 0x1010

bekommen Aber was ist der Name für diese Art der Codierung? Woher kommt das? Recherchen im Internet darüber hat nicht viel geholfen


Auch warum schlägt die folgende Aussage fehl?

Antwort

1

Sie codieren Zahlen als Binärdaten so, dass das höchstwertige Byte an erster Stelle steht. Das heißt big-endian representation.

Codierung 123123 mit Ihrer Methode schlägt fehl, weil Dechex eine ungerade Anzahl von Ziffern erzeugt. Sie benötigen zwei Hexadezimalziffern, um ein Byte zu bilden, also erfordert hex2bin, dass die Eingabezeichenfolge eine gerade Länge hat.

+0

oh vielleicht war ich nicht klar. Ich wollte fragen, wie der Name des bestimmten Formats heißt, das Bytes in Oktal mit jedem bye getrennt durch einen Backslash – Curious

+0

darstellt, obwohl Dank für mich wissen lassen, dass die Funktion fehlgeschlagen ist, weil die Zeichenfolge nicht gerade Länge hatte! – Curious

+0

Das nennt man String mit oktalen Fluchten. Nichts in Ihrer Frage erzeugt eine solche Zeichenkette, ich denke, es ist nur so, wie immer Sie beim Debuggen wählen, um nicht druckbare Zeichen anzuzeigen. – Joni