|
|
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
|