我正在使用
由于整数和浮点数的字节顺序可能不同,我需要分别获取这两种数据类型的信息。对于整数,通过指针算术运算获得字节顺序相对简单,但我不知道如何在运行时获取浮点数的字节顺序。有什么想法吗?
我的代码如下:
std::fstream
在C++中编写和读取二进制数据(std::ios::binary
),其中包括整数和浮点值。虽然我的代码在本地架构上可以正常工作,但我希望确保它是可移植的,即在具有不同字节顺序的计算机上仍能正确读取由本机生成的二进制文件。因此,我的想法是在二进制文件的第一个字节中添加一个值,该值将指示文件的字节顺序。由于整数和浮点数的字节顺序可能不同,我需要分别获取这两种数据类型的信息。对于整数,通过指针算术运算获得字节顺序相对简单,但我不知道如何在运行时获取浮点数的字节顺序。有什么想法吗?
我的代码如下:
#include <cstdint>
#define INT_LITTLE_ENDIAN 0x01u
#define INT_BIG_ENDIAN 0x02u
#define FLOAT_LITTLE_ENDIAN 0x04u
#define FLOAT_BIG_ENDIAN 0x08u
uint8_t getEndianess(){
uint8_t endianess = 0x00;
uint16_t integerNumber = 0x1;
uint8_t *numPtr = (uint8_t*)&integerNumber;
if (numPtr[0] == 1) {
endianess |= INT_LITTLE_ENDIAN;
}else {
endianess |= INT_BIG_ENDIAN;
}
/* TODO: check endianess for float */
return endianess;
}