//利用 联合体内存对齐的特点
union FloatType {
float FloatNum; int IntNum;};
unsigned char * FloatToByteArray(float f)
{
unsigned char * DataBuf = new unsigned char[4];
FloatType Number;
Number.FloatNum = f;
DataBuf[0] = (unsigned char)Number.IntNum;
DataBuf[1] = (unsigned char)(Number.IntNum >> 8);
DataBuf[2] = (unsigned char)(Number.IntNum >> 16);
DataBuf[3] = (unsigned char)(Number.IntNum >> 24);
return DataBuf;
}
float ByteArrayToFloat(unsigned char * buf, size_t size)
{
FloatType Number;
Number.IntNum = 0;
Number.IntNum = buf[3];
Number.IntNum = (Number.IntNum << 8) | buf[2];
Number.IntNum = (Number.IntNum << 8) | buf[1];
Number.IntNum = (Number.IntNum << 8) | buf[0];
return Number.FloatNum;
}
int main()
{
float Num = 8899.88;
unsigned char * buf = FloatToByteArray(Num);
float num1 = ByteArrayToFloat(buf, 4);
std::cout << "转换之后的数字 = " << num1 << std::endl;
getchar();
return 0;
}