|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : alexander lunyov 2:5020/400 29 Feb 2008 20:37:45 To : All Subject : как собрать байты в число? -------------------------------------------------------------------------------- приветствую всех. есть бинарный файл с записями разной длины. хотел написать функцию, которая бы брала из файла столько байт сколько мне надо и конвертила их в число. до этого perl'ом бинарные файлы не разбирал и вот встрял. читал доки, рецепты.... нет, не понимаю. снимите с ручника. sub readfile { my $number = ""; my $buffer = ""; my $handle = shift; my $len_to_read = shift; sysread $handle,$buffer,$len_to_read; foreach (split(//,$buffer)) { printf("%02x ", ord($_)); } my @aa = unpack("C" x $len_to_read,$buffer); print " = "; foreach $i (@aa) { print $i," ";} print "\n"; } сама программа: open (FILE,$filename) or die "can't open file $filename\n"; binmode FILE; &readfile(FILE,1); &readfile(FILE,2); &readfile(FILE,4); получаю такую картину: c8 = 200 00 4e = 0 78 03 cb 9c 2f = 3 203 156 47 то есть каждый байт превращается в число. а как сделать чтобы все байты из одной партии стали числом? то есть чтобы 03 cb 9c 2f стало числом 63675439? можно их по-тупому перемножить последовательно, но я чувствую что можно всё сделать намного элегантнее. но не знаю как :( -- your sweet isn't ready yet --- ifmail v.2.15dev5.4 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/2573379ced2f7.html, оценка из 5, голосов 10
|