如何將一個整數轉換爲一個4字節的數組?如何將整數轉換爲字節數組php
這裏是確切的代碼我想端口(C#)
int i = 123456;
byte[] ar = BitConverter.GetBytes(i);
// ar will contain {64, 226, 1, 0}
我怎麼會做在PHP中完全一樣的東西?
如何將一個整數轉換爲一個4字節的數組?如何將整數轉換爲字節數組php
這裏是確切的代碼我想端口(C#)
int i = 123456;
byte[] ar = BitConverter.GetBytes(i);
// ar will contain {64, 226, 1, 0}
我怎麼會做在PHP中完全一樣的東西?
等效轉換是
$i = 123456;
$ar = unpack("C*", pack("L", $i));
雖然字節順序(小/大端)依賴於機器結構(因爲它也是在BitConverter
的情況下)。這可能會或可能不會很好。
按預期工作。謝謝。 – user1392060 2012-07-18 15:39:21
$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)
}
對不起,但這似乎是錯誤的。正如我發佈的,「123456」的正確解決方案是64,226,1,0。另外,數組必須包含4個元素。你的包含6.(整數總是4字節) – user1392060 2012-07-18 15:33:40
嗯,你是對的。 PHP在unpack()調用中將整數轉換爲字符串。抱歉,錯誤的答案。 – 2012-07-18 15:36:04
由於PHP中的字節數組相當於是一個字符串,這個會做:
$bytes = pack('L', 123456);
直觀地瞭解,使用bin2hex
:
echo bin2hex($bytes);
// 40e20100
// (meaning 64, 226, 1, 0)
可能是真的。但我仍然需要數組中的單個字節。不管怎麼說,還是要謝謝你。 – user1392060 2012-07-18 16:43:54
@user'echo $ bytes [0],$ byte [1],$ byte [2],$ byte [3];'PHP字符串*本質上是字節數組。 – deceze 2012-07-18 16:45:36
哦,好的!那麼請原諒我的無知。現在你提到它了,我認爲我可能會在PHP中使用很多東西... – user1392060 2012-07-18 17:08:02
您是否正在尋找的結果是一個包含*十進制數字* 64,226等的數組?或者你真的在尋找*字節*,在PHP中是字符串? – deceze 2012-07-18 15:36:55