在float数组中交换字节

时间:2014-12-15 19:38:01

标签: c++ endianness

我目前正在研究二进制文件格式,其中数据表示为浮点数组,数据总是应该用小端表示法写入。所以,目前我做的事情如下:

float * swapped_array = new float[length_of_array];

for (int i = 0; i < length_of_array; ++i) {
    swapped_array[i] = swap_float(input_array[i]);
}

这里swap_float交换浮点值的四个字节。现在,我想知道是否有一种方法可以跨平台方式执行此操作,而无需迭代使用此for循环并使其更具计算效率。

1 个答案:

答案 0 :(得分:2)

在我看来,您可以使用一些指针算法来交换字节:

byte mem;
byte* first = (byte*) floatpointer;
mem = *first;
*first = *(first+0x03);
*(first+0x03) = mem;
first++;
mem = *first;
*first = *(first+0x01);
*(first+0x01) = mem;