2015-07-03 56 views
0

我有一個解決方案,但是這個解決方案很慢。 例子:如何將字節數組轉換爲十六進制字符串?

$arr = array(14, 0, 1, 0, 0, 0, 0, 0, 0, 224, 0, 255, 255, 255, 255, 255); 
$hex_str = ""; 
foreach ($arr as $byte) 
{ 
    $hex_str .= sprintf("%02X", $byte); 
} 

結果是:0E0001000000000000E000FFFFFFFFFF

格式是:

255 => FF 
0 => 00 
1 => 01 
14 => 0E 

如果你知道一個更快的解決方案,分享請。

+2

您的代碼作品很簡單。沒有辦法完成你所需要的東西,這樣可以節省你比輸入問題更多的時間。 – Sammitch

回答

3

您可以先將每個整數轉換爲char。

$chars = array_map("chr", $arr); 

然後使它成爲一個字符串:

$bin = join($chars); 

最後將其轉換成一個十六進制字符串:

$hex = bin2hex($bin); 

見:array_mapchrjoinbin2hex。 (當然,你可以在一行中完成所有工作。)

+1

不錯的一步一步解決方案與參考:)! (不太確定,如果OP真的想要大寫字母,如果是的OP只需要使用'strtoupper') – Rizier123

+1

我也懷疑它以任何方式「更快」。 (只是更快的閱讀也許。) – mario

+0

是的,我也不是很確定,究竟OP是尋找什麼:http://stackoverflow.com/questions/31211772/how-to-convert-an-array-of- bytes-to-a-hex-string/31211886?noredirect = 1#comment50425505_31211772與他的問題。 – Rizier123

相關問題