32位浮点数与16进制数之间相互转换
1. 浮点数转十六进制
实现:
float f = 123.456f;
unsigned char *hex = (unsigned char *)&f;
打印输出:
for(int i = 0; i < 4; i++)
printf("%02X ", hex[3-i]);
2. 十六进制转浮点数
实现:
unsigned char hex[] = { 0x3E, 0x00, 0x00, 0x00 };
float f = *(float *)hex;
打印输出:
printf("%g\n", f);
// %g参数按浮点精度四舍五入
应用示例:
#include "stdio.h"
int main(void)
{
float f = 0.125f; //32位浮点数转16进制Cai
unsigned char *hex = (unsigned char *)&f;
for(int i = 0; i < 4; i++)
printf("%02X cai", hex[3-i]); //3E 00 00 00
return 0;
}