有这么一道题
怎么做?下面提供一种方法
我们知道做这道题只需要把float四个字节的数据从低地址开始一个一个地拿出来,然后再从存放float大端字节序数据的高地址处把刚才的数据依次放回去就可以了,那么代码怎么写呢
#include <stdio.h>
void hton(float val, char* buf)
{
char* p = &val;
int i = 3;
while (i >= 0)
{
buf[i] = *p;
i--;
p++;
}
}
int main()
{
float x = 3.2f;//cd cc 4c 40
char temp[4];
hton(x, temp);
return 0;
}
调试程序,我们去内存找到val的地址会发现他的数值
执行完该函数,我们去内存查找到temp的地址会发现
原本小端存储的数据cdcc4c40变成了大端存储404ccccd,达到效果,成功!
关键点在于将val的地址强制转换为(char*) 会拿到val数据的第一个字节的数据,然后每次将char*类型的p++,都会使p的地址向前一个字节,依次拿到高位地址的高位数据,每次都将p指向的一个字节的数据依次从buf的高地址处开始存储(p最早指向最低位数据,存放在buf的最高位地址),存放完毕,退出循环即可实现!