在 C 中,我有一个 char 数组,用于存储位级别的数据。我将这些数组存储到文件中,然后在具有不同体系结构的机器中读取它们。我的问题是位的顺序是否能保证一致?例如,如果我将“10010011”存储到第一个字节,相邻的 1 是否总是被读取为位于 2^0 和 2^1 位置,或者它们最终会被解释为 2^7 和 2^6 位?
编辑:我想为稍后阅读此页面的人澄清一下这个问题。字节顺序是多字节对象中字节的顺序,但我关心的是给定字节中的位。当一个字节存储到磁盘时,它存储为(通常)8 位的序列。我不是硬件专家,但它必须以某种方式归结为那个。所以,我担心的是字节的存储方式是不是任何机器都会读取原始的 unsigned char 值,或者如果一台机器是 3,那么另一台机器是 192。我担心这些位最终会以某种方式被洗牌。显然,根据我选择的答案以及下面的评论之一,这不是问题。谢谢。
最佳答案
简单的答案:
这些位仍然是正确的顺序。
但是,如果执行超过 %c 的任何格式转换,例如 %d,那么读取架构的字节顺序将决定字节顺序。每个字节中的位仍然相同。
关于c - C 二进制文件的位字节顺序和可移植性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28004830/