Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Yuriy Kaminskiy                      2:5020/517.21  09 Jul 2002  03:04:40
 To : Artem Chuprina
 Subject : Re: unpack
 -------------------------------------------------------------------------------- 
 
 
 >>>>> On 16:16 08/7/2002, Artem Chuprina wrote to Artur Komarov:
  AK>> Есть кусок: while (read(DAT, $buff, 5)) {
  AK>>  ($data[3], $data[2], $data[1], $data[0], $proto{"socks5"},
  AK>> $proto{"sock4"}, $proto{"http80"}, $proto{"http8080"},
  AK>> $proto{"http3128"})=unpack
  AC> В чтении документации по диагонали. Все идущие подряд b пакуют
  AC> одну строку, и в одну же, соответственно, распаковывают.
 
  1. Это неправда. В одну и ту же строку пакуют b5 или b*. "bbbbb"
 распаковываются в _пять_ строк. Проблема только в том, что это биты из
 пяти _младших_ битов _разных_ байтов. Т.е. - второй b - из младшего
 бита 6-го байта (которого нет), третий - седьмого, и т.д. В результате
 в $proto{sock4}...proto{http3128} будет undef.
  2. Из документации это отнюдь не очевидно.
  3. Это только половина проблемы. Кто сказал, что read(DAT,$buff,5)
 прочитает именно пять байт?  [если DAT - это файл на диске,
 это не актуально, AFAIK; но и тогда подстраховаться не мешает]
 -- 
 Yuriy Kaminskiy.
 --- Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.1 (Cuyahoga Valley)
  * Origin: Code is language! http://www.anti-dmca.org (2:5020/517.21@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: unpack   Yuriy Kaminskiy   09 Jul 2002 03:04:40 
Архивное /ru.perl/174276c84c7b9.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional