c++ - 字节序是否影响写入奇数个字节?

标签 c++ file-io endianness

假设您有一个 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/

相关文章:

python-3.x - Python Bokeh 文件输入小部件

c++ - FILE_ATTRIBUTE_NORMAL 和 0 有什么区别?

改变字节顺序, union 是否比位移更有效?

c++ - 从字节中获取位

C++ 预处理器指令作为函数参数

c++ - 与 Boost for Windows 一起安装的优秀免费 IDE?

java - 如何比较两个 long 的高 40 位

c++ - 降低 o(n^3) c++ 代码的复杂性

c++ - 多进程打开同一个文件导致文件操作失败

c - c风格字符串的endiannes问题