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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : alexander lunyov                     2:5020/400     12 Mar 2008  13:10:02
 To : Artem Chuprina
 Subject : Re: как собрать байты в число?
 -------------------------------------------------------------------------------- 
 
 Artem Chuprina wrote:
 
 > Для начала надо понимать, что получить ты пытаешься не длинное число,
 > которое может быть произвольной длины, а обычное.  Обычное с точки
 > зрения unpack бывает 8-битное (C), 16-битное (S, n или v в зависимости
 > от требований к совместимости), 32-битное (L, N, V), и если повезет,
 > 64-битное (оно только в native укладке).  Есть еще такая хитрая штука,
 > как w, но для нее число соответственно паковать надо.
 > 
 > А вообще - perldoc perlpacktut до просветления...
 
 спасибо, прочитал, до просветления конечно далеко, но кое-что понял. всё 
 почти работает, но есть один ньюанс - опять с pack/unpack-ом. не могу 
 понять, что не так.
 
 есть 7-байтное поле, в котором содержится дата/время - по одному байту 
 соответственно на год,месяц,день,час,минуту,секунду и долю секунды.
 
 имеется строка 070a12110f1002, из неё нужно получить такую же строку, но 
 в десятичной системе - 07101817151602.
 ===========================================================
 push @fields, &readfile($filehandle,7,'hex'); # date
 print "_".$fields[0]."_ ",map hex($_),unpack("A2"x7,$fields[0]),"\n";
 ===========================================================
 
 ход мыслей - распаковываем по два символа семь раз и каждые 
 распакованные два символа переводим в dec.
 
 а получаю сие:
 
 ===========================================================
 Illegal hexadecimal digit '
 ' ignored at ./converter.pl line 68.
 _070a12110f1002_ 7101817151620
 ===========================================================
 
 подчеркиваниями специально выделил содержимое fields[0] - нету же там 
 никаких illegal digit'ов, откуда ошибка? и почему последний байт из 02 
 превращается в 20?
 
 -- 
 your sweet isn't ready yet
 --- ifmail v.2.15dev5.4
  * Origin: Demos online service (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 как собрать байты в число?   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/25730e935b08f.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional