//################################################################################################# qword Var_Temp_Hex; qword Var_Temp; float Var; qword Vorzeichen; qword Exponent; qword Mantisse; Var_Temp_Hex = ((this.Byte(4) // 4 Byte IEEE754 + (this.Byte(3) << 8) + (this.Byte(2) << 16) + (this.Byte(1) << 24))); write("Var_Temp_Hex = %llx", Var_Temp_Hex); Mantisse = ((Var_Temp_Hex & 0xFFFFFF) - 0x800000); // Abspaltung des Nachkommateils -> 24 bit und "normierung" durch abtrennen des ersten Bits Mantisse = (Mantisse << 29) ; // auffüllen der restlichen Stellen (52bit) Exponent = ((Var_Temp_Hex & 0xFFF00000) >> 23); Exponent = (Exponent - 0x7F) & 0xFF; // Exponent = Exponent - 127 (Bias) & maskieren Vorzeichen = (Var_Temp_Hex >> 31) & 0x1; Var_Temp = (Mantisse + (Vorzeichen << 63) + ((Exponent + 0x3FF) << 52)) &0xFFFFFFFFFFFFFFFFLL ; // 8 Byte IEEE754 write("Var_Temp = %f %llx", Var_Temp, Var_Temp); Var = (float) Var_Temp; write("Var = %f %llx", Var, Var); @sysvar::Main_Panel_XCP_Read::Variable_Answer_Float[@sysvar::Main_Panel_XCP_Read::Receive_Step] = Var; // (float) Var_Temp; write("@sysvar::Main_Panel_XCP_Read::Variable_Answer_Float[%i] = %f",@sysvar::Main_Panel_XCP_Read::Receive_Step,@sysvar::Main_Panel_XCP_Read::Variable_Answer_Float[@sysvar::Main_Panel_XCP_Read::Receive_Step]); //##################################################################################################