2015-11-27 2 views
0

Я получаю двоичное значение ниже в php, собирая значение из БД.чтение данных из двоичного значения в php?

0xF4010800000000960106000000002f03040000000063030700000000... 

Проблема в том, что я не знаю, как читать ее в разделах.

Например, первая часть F401 должна быть возвращена в SMALLINT (2 байта) 500, а затем сразу после этого 08000000 должен быть возвращен в качестве межд (4 байта без знака) и возвращения 8, как это делается в PHP ?

EDIT:

Я попытался hexdec(substr($value, 0, 4)), чтобы попытаться получить значение бита 500 на первые 4 байта, но это dosen't работа, я не знаю, что еще попробовать.

+1

Wel [что вы пробовали до сих пор] (http://mattgemmell.com/what-have-you-tried/)? – Naruto

+0

'$ hex = bin2ex ($ двоичный);' и '$ dec = hex2dec ($ dec);' – Peter

ответ

1

http://us3.php.net/manual/en/function.unpack.php

Примечание: Ваши данные упакованы в прямой порядок байтов.

$bin = hex2bin('F4010800000000960106000000002f03040000000063030700000000'); 
var_dump(unpack('vone/itwo/h*remain', $bin)); 

Выход:

array(3) { 
    ["one"]=> 
    int(500) 
    ["two"]=> 
    int(8) 
    ["remain"]=> 
    string(44) "0069106000000000f230400000000036307000000000" 
} 
Смежные вопросы