packing float as network long:
+-----+ +-----------+ +------------+
|float|--->|native long|--->|network long|
+-----+ +-----------+ +------------+
and unpacking network long back to float
+------------+ +-----------+ +-----+
|network long|--->|native long|--->|float|
+------------+ +-----------+ +-----+
####
use strict;
use IO::File;
savefloat(); # <--- this is run from Sun E10000
readfloat(); # <--- this is run from Windows XP
sub savefloat {
my $original_float = 1234.5678;
my $network_long = pack 'N', unpack 'L', pack 'f', $original_float;
my $f = new IO::File "NetworkLong.txt", "w";
print $f $network_long, "\n";
}
sub readfloat {
my $f = new IO::File "NetworkLong.txt", "r";
chomp(my $network_long = <$f>);
my $float = unpack 'f', pack 'L', unpack 'N', $network_long;
printf "%0.4f\n", $float;
}
####
On SUN: float->network_long->disk
On WindowsXP: disk->network_long->float
####
On WindowsXP: float->network_long->disk
On SUN: disk->network_long->float