在Qt中,可以使用qtEndian的方式在对int类型进行装换,但是对于float、double不能转换。
利用union集合的特性,取出float的4字节数组,double的8字节数组,对其进行大小端数据顺序调换。
float SwapFloat(float value) //Float大小端转换
{
union{
float f;
unsigned char b[4];
}source, dest;
source.f = value;
dest.b[0] = source.b[3];
dest.b[1] = source.b[2];
dest.b[2] = source.b[1];
dest.b[3] = source.b[0];
return dest.f;
}
double SwapDouble(double value) //Double大小端转换
{
union{
double d;
unsigned char b[8];
}source, dest;
source.d = value;
dest.b[0] = source.b[7];
dest.b[1] = source.b[6];
dest.b[2] = source.b[5];
dest.b[3] = source.b[4];
dest.b[4] = source.b[3];
dest.b[5] = source.b[2];
dest.b[6] = source.b[1];
dest.b[7] = source.b[0];
return dest.d;
}