Hello ,
I have a transferred a file from an IBM mainframe to a windows platform that
I need to analyse. The file contains an 8 byte floating point hexadecimal
representaion 44FE880000000000.
This should be converted to the number 65160.
I created the following subroutine which works ok but it does alot
of work. Is there something more efficient ?
# first byte (value-40) - get exponent base 16;
# next 7 bytes (sum for each bit) - (1/2)** exponential for each bit
# result = sum of all bits * (16 ** exponent)
sub floatmvs {
my $mat=0;
my $firstbyte = unpack "H2", $_[0];
my $exp=$firstbyte-40; # base 16
my $bin=unpack('B*',substr($_[0],1,7));
for ($start=0; $start <56; $start+=1) {
$bit=substr($bin,$start,1);
$bitpos=$start+1;
if ($bit == 1) {
$val=(1/2)**($bitpos);
$mat=$mat+$val;
}
}
my $num=$mat*(16**$exp);
return $num;
}
Thanks Mark
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>