Re: reading a few bytes into a file
- From: rob.dixon@xxxxxxx (Rob Dixon)
- Date: Wed, 30 Jul 2008 14:06:37 +0100
Scott Haneda wrote:
Hello, I have this small C app that someone wrote for me ages ago, and
am tired of it breaking every time I move it around to various
systems, I will include it below.
I am hoping I can do this in perl, as a one liner, were it will read a
the first 4 bytes of a file, grab 4 bytes out of the file, which is a
big endian value, and return that as an int to me.
Here is the basic C app I have been using:
#include <stdio.h>
#include <libkern/OSByteOrder.h>
int main (int argc, char *argv[]) {
FILE* fd;
char buffer[8];
unsigned long int dv;
//open the file
fd = fopen(argv[1], "r");
printf("Filename: %-50s", argv[1]);
fread(buffer, 1, sizeof(buffer), fd);
dv = OSReadBigInt32(buffer, 4);
// print the decimal value
printf(" Value: %ld\n", dv);
return 0;
}
How about this?
Rob
use strict;
use warnings;
my $file = shift;
open my $fh, '<', $file or die $!;
print "Filename: $file";
my $buffer;
my $count = read $fh, $buffer, 4 or die $!;
die "Insufficient data in file" unless $count >= 4;
my $dv = unpack 'N', $buffer;
print " Value: $dv\n";
.
- References:
- reading a few bytes into a file
- From: Scott Haneda
- reading a few bytes into a file
- Prev by Date: How to get a computed string to act as a re in if statement
- Next by Date: Re: reading a few bytes into a file
- Previous by thread: Re: reading a few bytes into a file
- Next by thread: Re: reading a few bytes into a file
- Index(es):
Relevant Pages
|