Двоичное чтение и запись средствами PHP

DorBer

Guest
Двоичное чтение и запись средствами PHP

Поиск результатов на дал, в мануале не нашел (могу и ошибаться).

Теория:
в файлах, как и в памяти числа хранятся в следующем виде:
шестнадцатиричное число байтами записано в обратном порядке.

Вопрос:
есть ли в PHP средства для чтения (и записи) этих чисел?

Я делаю так:
$binary_data = fread($fp, 4);
$number = hexdec(bin2dec(strrev($data)));
 

DorBer

Guest
Спасибо. Посмотрел.
Жалко нельзя использовать нестандратные числа... Данные в файле 3- и 7-байтные. А то можно было бы структурами читать.
 

white phoenix

Новичок
PHP:
function bytes2int($str,$l=FALSE)
{
 // $str - строка
 // $l - если TRUE, то перевернутая строка
 if ($l) {$str = strrev($str);}
 $dec = 0;
 $len = strlen($str);
 for($i=0;$i<$len;$i++){$dec += ord(substr($str,$i,1))*pow(256,$len-$i-1);}
 return $dec;
}
function int2bytes($len,$int=0x00)
{
 // $len - размер
 // $int - число
 $hexstr = dechex($int);
 if ($len === NULL) {if (strlen($hexstr) % 2) {$hexstr = '0'.$hexstr;}}
 else {$hexstr = str_repeat('0',$len*2-strlen($hexstr)).$hexstr;}
 $bytes = strlen($hexstr)/2;
 $bin = '';
 for($i=0;$i<$bytes;$i++) {$bin .= chr(hexdec(substr($hexstr,$i*2,2)));}
 return $bin;
}
 

Solid

Drosera anglica
Вообще на http://phpclasses.org есть класс, который даёт возможность туда-обратно конвертировать двоичные/integer/double/float/etc. данные...
 
Сверху