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>