2015-07-03 3 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_map, chr, join, bin2hex. (И, конечно, вы можете сделать все это в одной строке.)

+1

Хорошее пошаговое решение со ссылками :)! (Не слишком уверен, что OP действительно хочет буквы в верхнем регистре, если да, OP просто должен будет использовать 'strtoupper') – Rizier123

+1

Я также сомневаюсь, что это« быстрее ». (Быстрее читать, возможно.) – mario

+0

yep, я тоже не совсем уверен, что именно ищет OP: http://stackoverflow.com/questions/31211772/how-to-convert-an-array-of- bytes-to-a-hex-string/31211886? noredirect = 1 # comment50425505_31211772 с его вопросом. – Rizier123