Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2013, 20:51   #1
kRicha
Пользователь
 
Регистрация: 29.03.2012
Сообщений: 17
Восклицание Бинарное чтение файла

Код:
<?php
@error_reporting ( E_ALL );
@ini_set ( 'display_errors', true );
@ini_set ( 'html_errors', false );
@ini_set ( 'error_reporting', E_ALL );

@ini_set( 'max_execution_time', 10 );
@set_time_limit( 10 );


$S4 = 0;
$KADR = 0;
$K_n = 0;
$K_d = 0;
$K_k = 0;
$MASK = '16384';

$cicl = '/var/www/kricha/data/www/troyan.dle-templates.info/il76_c';

$fp = fopen($cicl, 'rb');

if ($fp)
{
    $MASK = dechex( $MASK );
        while (!feof($fp))
    {
      $S4++;

                $elem = fread($fp,2);
        $d = bin2hex( $elem );

        if( $MASK==$d )
        {
          if ($S4<64) $K_k++;
          if ($S4>64) $K_d++;
          if ($S4==64) $K_n++;
          
          
          $KADR++;
          $S4 = 0;
        }
        }

    echo 'Кадров всего: '.$KADR."\n".'Коротких: '.$K_k.PHP_EOL.'Длинных: '.$K_d.PHP_EOL.'Нормальных: '.$K_n;
}
else
{
        die('Невозможно открыть файл.');
}

?>
Нужно прочитать файл, вытащить значения и каждое значение сравнивать с маской. Маска - индикатор конца кадра. Вот мне нужно посчитать кол-во кадров. У меня рез-тат: 78, но сказали в этом файле их около 400. Не могу понять в чем я ошибся.
kRicha вне форума Ответить с цитированием
Старый 12.04.2013, 11:28   #2
kRicha
Пользователь
 
Регистрация: 29.03.2012
Сообщений: 17
По умолчанию

В общем, кое-как решил проблему, правда в другом файле, теперь считает кол-во кадров правильно. Теперь проблема в дугом, как из двух битов бинарных данных получить нормальное десятичное число? Как только я не пробовал переводить в число - ничего не выходит.

Могу сбросить файл, с которого нужно считать значения.

Код:
Код:
<?
@header("Content-type: text/css; charset=windows-1251");
@error_reporting ( E_ALL );
@ini_set ( 'display_errors', true );
@ini_set ( 'html_errors', false );
@ini_set ( 'error_reporting', E_ALL );
@ini_set( 'max_execution_time', 10 );
@set_time_limit( 10 );

$e_counter = 0;
$KADR = 0;
$norm_kadr = 0;
$long_kadr = 0;
$short_kadr = 0;
$kadr_end_mask = ord(decbin(16384));
$cicl = '/var/www/kricha/data/www/troyan.dle-templates.info/il76c';

$fp = fopen($cicl, 'rb');

if ($fp)
{
		while (!feof($fp))
    {
      $e_counter++;
      $elem = fread($fp,2);
      if ($kadr_end_mask == ord($elem))
      {


        if ($e_counter<64) $short_kadr++; elseif ($e_counter>64) $long_kadr++; elseif ($e_counter==64) $norm_kadr++;
        $KADR++; 
        $e_counter = 0;
        if ($norm_kadr == 66 or $norm_kadr == 67) {

          $test[] = $vork_arr;
        }
        $vork_arr = array();

      }

		}

    echo 'Кадров всего: '.$KADR."\n".'Коротких: '.$short_kadr.PHP_EOL.'Длинных: '.$long_kadr.PHP_EOL.'Нормальных: '.$norm_kadr;
    echo "\n\nДлинна файла-копии: ".
      (int)((($KADR/2)/60)/60).' часов '.
      ((($KADR/2)/60)%60).' минут '.
      ( ($KADR/2) - ( ((int) ( ( ($KADR/2)/60 ) ))*60)).' секунд';
}
else
{
		die('Невозможно открыть файл.');
}
fclose($fp);
?>
kRicha вне форума Ответить с цитированием
Старый 14.04.2013, 21:50   #3
kRicha
Пользователь
 
Регистрация: 29.03.2012
Сообщений: 17
По умолчанию

Товарищи, никто не знает?
kRicha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение с файла coollife PHP 7 27.01.2013 19:30
fread и бинарное чтение файла kleric C++ Builder 11 02.06.2012 18:21
Чтение из файла pinkiller Общие вопросы C/C++ 3 07.01.2012 07:48
Чтение из файла clasterit Паскаль, Turbo Pascal, PascalABC.NET 6 04.11.2011 17:46
бинарное чтение файла.. Gerry Помощь студентам 3 03.11.2009 11:59