Thomas Meinike: Hexadezimalwert in float umwandeln

Beitrag lesen

Hallo,

bei dem Format handelt es sich um ein 32 Bit Format. Das Format müsste Single sein.

Beispiel: 4133851F hex entspricht 11,22 als Gleitpunktzahl.

Nach dem Aufbau von Gleitkommazahlen nach IEEE 754 sollte diese JS-Funktion zum Ziel fuehren:

function IEEE754_Hex32ToDez(hexstr)
{
  var dez,bin1,bin2,bin3,bin4,bin,sign,expo,mant,nul8="00000000";

bin1=nul8+parseInt(hexstr.substr(0,2),16).toString(2);
  bin2=nul8+parseInt(hexstr.substr(2,2),16).toString(2);
  bin3=nul8+parseInt(hexstr.substr(4,2),16).toString(2);
  bin4=nul8+parseInt(hexstr.substr(6,2),16).toString(2);

bin1=bin1.substr(bin1.length-8,8);
  bin2=bin2.substr(bin2.length-8,8);
  bin3=bin3.substr(bin3.length-8,8);
  bin4=bin4.substr(bin4.length-8,8);

bin=bin1+bin2+bin3+bin4;

sign=parseInt(bin.charAt(0),2);    // Vorzeichen
  expo=parseInt(bin.substr(1,8),2);  // Exponent
  mant=parseInt(bin.substr(9,23),2); // Mantisse

dez=(1-2*sign)*Math.pow(2,expo-127)*(1+mant/Math.pow(2,23));

return(dez.toFixed(8));
}

alert(IEEE754_Hex32ToDez("4133851F")); // 11.22000027

MfG, Thomas