将浮点值从大端转换为小端 [英] Converting float values from big endian to little endian
本文介绍了将浮点值从大端转换为小端的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否可以将浮点数从大到小转换?我有一个值从一个PowerPC(大端)平台,我通过TCP发送到Windows进程(小端)。这个值是一个浮点数,但当我 memcpy
的值到一个win32 float类型,然后调用 _byteswap_ulong
那个值,我总是得到0.0000?
Is it possible to convert floats from big to little endian? I have a value from a PowerPC(big endian)platform that I am send via TCP to a Windows process (little endian). This value is a float, but when I "memcpy
" the value into a win32 float type and then call _byteswap_ulong
on that value, I always get 0.0000?
我做错了什么?
推荐答案
字节工作
float ReverseFloat( const float inFloat )
{
float retVal;
char *floatToConvert = ( char* ) & inFloat;
char *returnFloat = ( char* ) & retVal;
// swap the bytes into a temporary buffer
returnFloat[0] = floatToConvert[3];
returnFloat[1] = floatToConvert[2];
returnFloat[2] = floatToConvert[1];
returnFloat[3] = floatToConvert[0];
return retVal;
}
这篇关于将浮点值从大端转换为小端的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文