我们经常遇到一个数据转换问题,我们使用电量表采集数据,电量表的电流电压等数据并不是两个字节,而是4个字节的表达,也就是下位系统直接传输的是单精度浮点数,存储格式是IEEE754格式,大家都比较陌生。实际上我们的计算机系统的浮点数也就是IEEE754格式,所以转换的时候非常简单,不需要进行各种复杂的算法,只需要进行必要的设置就可以转换成功,那就是使用C语言的union定义。(希望你能理解)。
//********************************************************
// IEEE574格式转换
//********************************************************
typedef union
{
float fdata;
u32 idata;
}Convert754;
//********************************************************
delphi转换如下:
//**********************************
// IEE -754 转浮点数
//**********************************
function ByteToFloat(b1,b2,b3,b4:byte):Single;
var tdb : Single;
bits : Integer;
s,e,m :Integer;
begin
bits := (b1 shl 24) + (b2 shl 16) + (b3 shl 8) + b4;
//处理符号
if (bits shr 31