将浮点值从大端转换为小端 [英] Converting float values from big endian to little endian

查看:511
本文介绍了将浮点值从大端转换为小端的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以将浮点数从大到小转换?我有一个值从一个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_ulongon 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆