假设您有一个 uint64_t 字节
,并且您知道您只需要 7 个字节,因为您存储的整数不会超过 7 个字节的限制。
当写一个文件时,你可以做类似的事情
std::ofstream fout(文件名);
fout.write((char *)&bytes, 7);
只写 7 个字节。
我想弄清楚的问题是系统的字节顺序是否会影响写入文件的字节数。我知道字节顺序会影响写入字节的顺序,但它是否也会影响写入哪些字节? (仅适用于您写入的字节数少于整数通常所具有的字节数的情况。)
例如,在小端系统上,前 7 个字节从 LSB 开始写入文件。在大端系统上,文件中写入了什么?
或者换句话说,在小端系统上,MSB(第 8 个字节)不会写入文件。我们能否在大端系统上期待相同的行为?
最佳答案
Endianess 仅影响 (16, 32, 64) int
的写入方式。如果您正在编写 bytes,(根据您的情况)它们将按照您正在执行的完全相同的顺序编写。
比如这种写法会受到endianess的影响:
std::ofstream fout(fileName);
int i = 67;
fout.write((char *)&i, sizeof(int));
关于c++ - 字节序是否影响写入奇数个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54091194/