Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   запись бинарных данных php (https://forum.antichat.xyz/showthread.php?t=87860)

mr.celt 07.10.2008 09:56

запись бинарных данных php
 
Стоит задача слопатить бинарный файл с помощью php. Научился запихивать по одному байту, типа так
"fwrite($fh,pack("c", $value))", а как записать например число 150 в 3 байта?

[Raz0r] 07.10.2008 10:35

Цитата:

а как записать например число 150 в 3 байта?
150 - это 1 байт, чтобы получить три байта нужно прибавить еще два нулл байта:
pack("cxx", 150);

mr.celt 07.10.2008 11:04

здорово,) теперь почти все ясно, как я понимаю 100000 занимает 3 байта, а вот как его записать ровно в 3 байта, когда использую pack("f", 100000); выделяется 4.

mr.celt 07.10.2008 11:28

Все дальше сам разобрался, сделал вот так

if (0 <= $size && $size < 256) fwrite($fh,pack("xxc", $size));
elseif (256 <= $size && $size < 65536) fwrite($fh,pack("xn", $size));
else
{
$pref = $size % 65536;
$main = ($size - $pref) / 65536;
fwrite($fh,pack("c", $main));
if (0 <= $pref && $pref < 256) fwrite($fh,pack("xc", $pref));
elseif (256 <= $pref && $pref < 65536) fwrite($fh,pack("n", $pref));
}


Время: 09:51