a bit messy but ... i'm thinking x86 byte order ?
===================================================================
#!/usr/local/bin/perl
use strict;
# a IEEE FP NUMBER
# http://www.psc.edu/general/software/packages/ieee/ieee.html
# Single Prec
# S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF
# 0 1 8 9 31
# Double Prec
# S EEEEEEEEEEE FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
# 0 1 -11- 11 12 -52- 63
# and my FP24
# S EEEEEEEEE FFFFFFFFFFFFFF
# 0 1 -9- 9 10 -14- 23
# in real life raw data is 14 K bytes
my @rawdata = ( 0x0e, 0x00, 0x00 );
my $fp24 = pack "CCC", $rawdata[2], $rawdata[1], $rawdata[0];
# in real life .. now shift off the 3 elements, for the next stuff
my $binary_string = unpack("B*", $fp24);
print "010110100011110000001111\n";
print "$binary_string\n"; # good
print "2 " . "-" x 50 . "\n";
# so far so good ....
# now a real number 2.25
@rawdata = ( 0x00, 0x10, 0x40 );
$fp24 = pack "CCC", $rawdata[2], $rawdata[1], $rawdata[0];
# print $fp24; exit; od -t x1 40 10 00 good
my $binary_string = unpack("B*", $fp24);
print "$binary_string\n"; # good
print "3 " . "-" x 50 . "\n";
$binary_string =~ /(.)(.{9})(.{14})/;
print "24FP SIGN:$1 EXP:$2 MANT:$3\n";
print "4 " . "-" x 50 . "\n";
# repack
my $ieeedouble = $1 . $2 . "00" . $3 . '0' x 38;
# see if bits are good
$ieeedouble =~ /(.{8})(.{8})(.{8})(.{8})(.{8})(.{8})(.{8})(.{8})/;
print "$1 $2 $3 $4 $5 $6 $7 $8\n";
$ieeedouble =~ /(.)(.{11})(.{52})/;
print "IEEEDBL SIGN:$1 EXP:$2 MANT:$3\n";
print "5 " . "-" x 50 . "\n";
# looks ok to me
$one = pack "B64", $ieeedouble;
# print $one; # od -t x1 40 04 00 00 00 00 00 00 correct bit order good
printf "%lf\n", $one; # this prints 0.00000
===================================================================
On Fri, 2005-04-15 at 08:53, Chris Devers wrote:
> On Fri, 15 Apr 2005, Pete Lancashire wrote:
>
> > I've been trying pack/unpack but just can't seem to get
> > it to work. And maybe pack/unpack is not the right
> > way to go ?
>
> Please show the code you've tried so far.
>
>
>
> --
> Chris Devers
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>