我目前正在研究一种二进制文件格式,其中数据表示为 float 组,并且数据始终应该使用小端表示形式写入。所以,目前我做了如下事情:
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 循环并使其计算效率更高。
最佳答案
在我看来,您可以通过使用一些指针算术来交换字节:
byte mem;
byte* first = (byte*) floatpointer;
mem = *first;
*first = *(first+0x03);
*(first+0x03) = mem;
first++;
mem = *first;
*first = *(first+0x01);
*(first+0x01) = mem;
关于c++ - 交换 float 组中的字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27491770/