2012-07-18 20 views
11

Wie würde ich eine ganze Zahl in ein Array von 4 Bytes konvertieren?Wie konvertiert man Integer in Byte Array in PHP

Hier ist der genaue Code, den ich in dem Hafen (in C#) will

int i = 123456; 
byte[] ar = BitConverter.GetBytes(i); 
// ar will contain {64, 226, 1, 0} 

Wie würde ich genau das gleiche, was in PHP zu tun?

+1

Möchten Sie das Ergebnis zu sein ein Array mit den * Dezimalzahlen * 64, 226 usw.? Oder suchst du eigentlich nach den * Bytes *, die in PHP eine Zeichenkette wären? – deceze

Antwort

17

Die äquivalente Umwandlung

$i = 123456; 
$ar = unpack("C*", pack("L", $i)); 

See it in action.

Sie sollten jedoch beachten, dass die Bytereihenfolge (Little/Big Endian) von der Maschinenarchitektur abhängig ist (wie es auch bei BitConverter der Fall ist). Das könnte oder könnte nicht gut sein.

+1

Funktioniert wie vorgesehen. Vielen Dank. – user1392060

0
$i = 123456; 
$byte_array = unpack('C*', $i); 

var_dump($byte_array); 
array(6) { 
    [1]=> 
    int(49) 
    [2]=> 
    int(50) 
    [3]=> 
    int(51) 
    [4]=> 
    int(52) 
    [5]=> 
    int(53) 
    [6]=> 
    int(54) 
} 
+0

Sorry, aber das scheint falsch. Die richtige Lösung für "123456" ist 64,226,1,0, wie ich gepostet habe. Außerdem müsste das Array 4 Elemente enthalten. Dein enthält 6. (Integer ist immer 4bytes) – user1392060

+0

hmm, du hast Recht. PHP konvertiert die ganze Zahl in den Aufruf von unpack(). Entschuldigung für die falsche Antwort. –

4

Da das Äquivalent eines Byte-Array in PHP ein String ist, dies tun werde:

$bytes = pack('L', 123456); 

dass sichtbar zu machen, verwenden Sie bin2hex:

echo bin2hex($bytes); 
// 40e20100 
// (meaning 64, 226, 1, 0) 
+0

Könnte wahr sein. Aber ich brauchte immer noch die einzelnen Bytes in einem Array. Danke trotzdem. – user1392060

+0

@user 'echo $ bytes [0], $ byte [1], $ byte [2], $ byte [3];' PHP-Strings * sind * im Wesentlichen Byte-Arrays. – deceze

+0

Oh, ok! Entschuldige meine Unwissenheit dann. Jetzt, wo du es erwähnst, denke ich, dass ich die Dinge in PHP viel zu sehr verkomplizieren könnte ... – user1392060

Verwandte Themen