Есть бинарные данные 10 байт unsigned char
читаю:
$bin = file_get_contents('bin');
for ($i=0; $i < strlen($bin); $i++){
$unpack[] = dechex(implode(unpack('C', $bin{$i})));
}
получаю массив с hex значениями байтов
array(10) {
[0]=>
string(1) "0"
[1]=>
string(2) "d3"
[2]=>
string(2) "49"
[3]=>
string(2) "6c"
[4]=>
string(2) "1f"
[5]=>
string(2) "12"
[6]=>
string(2) "4b"
[7]=>
string(2) "3c"
[8]=>
string(2) "4b"
[9]=>
string(2) "c7"
}
имеем четвертый байт 108 = 6c = 1101100
теперь самое интересное: мне нужны значения 4 младших бит, потом два следующих и затем значение последнего старшего бита.
спасибо!
Спустя 51 минута, 28 секунд (22.06.2011 - 20:20) waldicom написал(а):
перевести в двоичную систему, а потом использовать как строку (у строки, как и у массива, есть индексы элементов). Или я чего-то не понимаю?
Спустя 11 минут, 4 секунды (22.06.2011 - 20:31) kasichvadim написал(а):
Как-то сразу не допер до этого
Но это лишние телодвижения (циклы).
Я надеялся на существования каких-либо функций (но гугл ничего не подсказал).
Нужно, наверное, курить двоичную арифметику....

Но это лишние телодвижения (циклы).
Я надеялся на существования каких-либо функций (но гугл ничего не подсказал).
Нужно, наверное, курить двоичную арифметику....
Спустя 14 минут, 22 секунды (22.06.2011 - 20:45) waldicom написал(а):
Спустя 25 минут, 26 секунд (22.06.2011 - 21:11) killer8080 написал(а):
Цитата (kasichvadim @ 22.06.2011 - 20:31) |
Нужно, наверное, курить двоичную арифметику.... |
именно :)
вот последние четыре бита в строковом виде
echo decbin(hexdec('6c') & bindec('1111'));
Спустя 9 минут, 28 секунд (22.06.2011 - 21:20) kasichvadim написал(а):
Спасибо всем за помощь!