Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Прочитать два байта из бинарного файла
 
 автор: K_Serg   (09.03.2006 в 14:58)   письмо автору
 
 

Здравствуйте. Помогите прочитать int длиной 2 байта из файла. Насколько я понял, в ПХП из файла читается только строка. Спасибо.

   
 
 автор: Loki   (09.03.2006 в 15:39)   письмо автору
 
   для: K_Serg   (09.03.2006 в 14:58)
 

<?
$fp
=fopen("file.txt""r");
$bytes=fgets($fp2);
echo 
$bytes;
?>

   
 
 автор: K_Serg   (09.03.2006 в 15:53)   письмо автору
 
   для: Loki   (09.03.2006 в 15:39)
 

Прошу прощения, может некорректно задал вопрос. Читать нужно из бинарного файла.
fgets - получает строку из 2-х символов. А требуется сообственно одно целое число, занимающее 2 байта. (первые два байта в файле - количество записей, которые и хочется получить). В моем конкретном случае это chr(153)+chr(1).

   
 
 автор: Trianon   (09.03.2006 в 17:14)   письмо автору
 
   для: K_Serg   (09.03.2006 в 15:53)
 

<? 
$fp
=fopen("file.txt""r"); 
$bytes=fgets($fp2); 
$lowbyte ord($bytes{0});
$highbyte ord($bytes{1});
echo 
$lowbyte 256 $highbyte
?>

   
 
 автор: Loki   (09.03.2006 в 17:33)   письмо автору
 
   для: Trianon   (09.03.2006 в 17:14)
 

Сам о таком подумал, но подумал что это уж слишком "в лоб":) Видимо - зря:)

   
 
 автор: Trianon   (09.03.2006 в 17:45)   письмо автору
 
   для: Loki   (09.03.2006 в 17:33)
 

Есть еще unpack(), но я ему как-то не очень доверяю. А так всё прибито гвоздями. ))

   
 
 автор: K_Serg   (10.03.2006 в 09:33)   письмо автору
 
   для: Trianon   (09.03.2006 в 17:14)
 

Спасибо, оно самое. Вдруг кому еще понадобится. Только пришлось чуть подправить, а то выдавало "00" - строка получалась.

 $nelem=fgets($f1,2); 
 $lowbyte = (int) ord($nelem{0}); 
 $highbyte = (int) ord($nelem{1}); 
 echo $lowbyte + 256 * $highbyte;

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования