|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : alexander lunyov 2:5020/400 12 Mar 2008 15:47:24 To : Dmitry E. Oboukhov Subject : Re: как собрать байты в число? -------------------------------------------------------------------------------- Dmitry E. Oboukhov wrote: > al> имеется строка 070a12110f1002, из неё нужно получить такую же строку, но > al> в десятичной системе - 07101817151602. > > имеется строка "070a12110f1002" или же двоичные данные 0x070a12110f1002? строка. > а если случай первый, то без проверки на корректность входных данных > выглядеть будет примерно так: > > $str="070a12110f1002"; > $str=~s/(..)/sprintf "%02d", hex "0x$1"/eg; спасибо, так всё получается. покрутив туда и сюда нашел ошибку и пришел к такому варианту: map sprintf("%02d",hex($_))." ",unpack "A2"x7,$fields[0]; а глюк был в том что пытаясь объять необъятное, распаковку и другие преобразования делал прямо в print'е, и в конце по привычке ставил "\n" print map hex($_),unpack("A2"x7,$fields[0]),"\n"; и к тому что вылезало из unpack-а прицеплялось "\n" - оно давало ошибку и последнюю цифру "0", а так как я не догадался разделить выходящие цифры пробелом и паддить их нулями, то и видел я не 02, а 20. в общем, надо быть внимательнее и отделять мухи от котлетов. -- your sweet isn't ready yet --- ifmail v.2.15dev5.4 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/25806678de3ef.html, оценка из 5, голосов 10
|