我的数据是2d 32位2D指针图像,该图像采用大字节序,我希望将其转换为小字节序。请检查以下代码:
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;
}
你好根据您的所有建议,我尝试了以下代码,但它给出了所有零值:
float **swapend( float **in ,float **out , int h, int v)
{
char *floatToConvert = ( char* ) & in;
char *returnFloat = ( char *) & out;
for (int m=0; m<h; m++)
for (int k=0; k<v; k++)
{
for (int i=0; i<sizeof(float); i++)
returnFloat[sizeof(float)-1-i] = floatToConvert[i];
}
return out;
}
谢谢。
最佳答案
这将无法可靠地工作。创建一个局部变量retVal
,最后返回它。函数结束后,此变量的值最终将是随机的。
我认为这种方法会更好,因为编译器将执行大多数必要的复制:
float be2le( char * floatToConvert ) {
float buffer;
char * returnFloat = (char *) &buffer;
...swap...
return buffer;
}
关于c - 将float 32位大字节序转换为小字节序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25060459/