in reply to Re: PERL Binary Data Handling
in thread PERL Binary Data Handling
Thank you both for the response! To elaborate on my question, let's assume that the input file contains a binary number of:
"0101_1111_1111_0000_0111_0000_1111_1010"
Output should be:
"1_0101_1111_1111_0000_0111_0000_1111_1010"
This is purely binary input. I only added the "_" for readability. I understand that we cannot write a file on non byte boundaries. So if I would always have 7 extra bits when this is written to the file. This would mean that my output file will look like:
"0000_0001_0101_1111_1111_0000_0111_0000_1111_1010"
When I run the code below, I get an output of:
"0000_0001_0000_0000_0000_0000_0000_0000_0000_0000"
I think I am still misusing the pack command. What am I missing? Code below:
#!/usr/bin/perl my $inputfile = $ARGV[0]; my $outputfile = $ARGV[1]; my $buff = ""; my $mybuff = ""; open (PARSER_FILE, $inputfile) or die "Couldn't open $inputfile for reading"; binmode(PARSER_FILE); open (OUT_FILE, ">", $outputfile) or die "Couldn't open $outputfile for writing"; binmode(OUT_FILE); read(PARSER_FILE, $buff, 4); $outbuff = unpack("b32", $buff); syswrite OUT_FILE, pack("b33", 1, $outbuff); close(OUT_FILE); close(PARSER_FILE)
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: PERL Binary Data Handling
by kcott (Archbishop) on Oct 06, 2012 at 07:36 UTC | |
by ashes3d (Initiate) on Oct 06, 2012 at 09:03 UTC |