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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Dmitry E. Oboukhov                   2:5020/830.100 12 Mar 2008  13:56:17
 To : alexander lunyov
 Subject : как собрать байты в число?
 -------------------------------------------------------------------------------- 
 
 >> Для начала надо понимать, что получить ты пытаешься не длинное число,
 >> которое может быть произвольной длины, а обычное.  Обычное с точки
 >> зрения unpack бывает 8-битное (C), 16-битное (S, n или v в зависимости
 >> от требований к совместимости), 32-битное (L, N, V), и если повезет,
 >> 64-битное (оно только в native укладке).  Есть еще такая хитрая штука,
 >> как w, но для нее число соответственно паковать надо.
 >>
 >> А вообще - perldoc perlpacktut до просветления...
 
 al> спасибо, прочитал, до просветления конечно далеко, но кое-что понял. всё
 al> почти работает, но есть один ньюанс - опять с pack/unpack-ом. не могу
 al> понять, что не так.
 
 al> есть 7-байтное поле, в котором содержится дата/время - по одному байту
 al> соответственно на год,месяц,день,час,минуту,секунду и долю секунды.
 
 al> имеется строка 070a12110f1002, из неё нужно получить такую же строку, но
 al> в десятичной системе - 07101817151602.
 
 имеется строка "070a12110f1002" или же двоичные данные 0x070a12110f1002?
 
 если второй случай, то такую строку можно получить командой:
 
 my $str=pack 'C*', 0x07, 0x0a, 0x12, 0x11, 0x0f, 0x10, 0x02;
 
 а распаковать соответственно
 my @chrs=unpack 'C*', $str;
 в массиве @chrs будут числа как ты хочешь
 
 а если случай первый, то без проверки на корректность входных данных
 выглядеть будет примерно так:
 
  $str="070a12110f1002";
  $str=~s/(..)/sprintf "%02d", hex "0x$1"/eg;
 
 ... Терпеть не могу Умку, Броневичок и прочих мажоров.
 --- Mutt/1.5.17+20080114 (2008-01-14)
  * Origin: Debian GNU Linux (2:5020/830.100)
 
 

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

 Тема:    Автор:    Дата:  
 как собрать байты в число?   alexander lunyov   29 Feb 2008 20:37:45 
 Re: как собрать байты в число?   Artem Chuprina   02 Mar 2008 14:44:35 
 Re: как собрать байты в число?   alexander lunyov   12 Mar 2008 13:10:02 
 как собрать байты в число?   Dmitry E. Oboukhov   12 Mar 2008 13:56:17 
 Re: как собрать байты в число?   alexander lunyov   12 Mar 2008 15:47:24 
 как собрать байты в число?   Dmitry E. Oboukhov   12 Mar 2008 17:08:30 
Архивное /ru.perl/44618ada5ae9.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional