|
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)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/25730e935b08f.html, оценка из 5, голосов 10
|