Questions tagged «endianness»

字节顺序是指如何将多字节值存储在内存中,在设备之间发送或存储在磁盘上。“ Big-Endian”值先存储其最高有效字节,而“ Little-Endian”值先存储其最低有效字节。其他字节顺序是可能的,但很少见,因此无法用这种方式描述。


30
如何在C ++中的大端值和小端值之间转换?
如何在C ++中的大端值和小端值之间转换? 编辑:为清楚起见,我必须将二进制数据(双精度浮点值以及32位和64位整数)从一种CPU架构转换为另一种。这不涉及网络,因此ntoh()和类似功能在这里不起作用。 编辑#2:我接受的答案直接适用于我要针对的编译器(这就是为什么我选择了它)。但是,这里还有其他非常好的,更便于移植的答案。
196 c++  endianness 

5
移位是否取决于字节序?
假设我有'numb'=1025 [00000000 00000000 00000100 00000001]代表的数字: 在Little-Endian机器上: 00000001 00000100 00000000 00000000 在Big-Endian机器上: 00000000 00000000 00000100 00000001 现在,如果我在10位上应用左移(即:numb << = 10),则应该具有: [A]在Little-Endian机器上: 正如我在GDB中注意到的那样,Little Endian进行了3个步骤的左移:[我展示了'3'个步骤,只是为了更好地理解处理过程] 请不要 在Big-Endian Convention中: 00000000 00000000 00000100 00000001 应用左移: 00000000 00010000 00000100 00000000 在Little-Endian中再次表示结果: 00000000 00000100 00010000 00000000 [B]。在Big-Endian机器上: 00000000 00010000 00000100 00000000 我的问题是: 如果我直接在Little Endian Convention上应用Left Shift,它应该给出: numb: …
156 c  endianness 

8
在Java中将字节数组转换为整数,反之亦然
我想将一些数据存储到Java中的字节数组中。基本上只是数字,每个数字最多占用2个字节。 我想知道如何将整数转换为2字节长的字节数组,反之亦然。我发现有很多解决方案在使用Google搜索,但是大多数解决方案没有解释代码中会发生什么。我不了解很多变化的东西,所以我希望能得到一个基本的解释。
139 java  types  endianness 


8
Java是否以小端或大端读取整数?
我问是因为我正在从C进程向Java发送字节流。在C端,32位整数的LSB是第一个字节,MSB是第4个字节。 所以我的问题是:在Java端,当我们读取从C进程发送的字节时,Java端的字节序是什么? 后续问题:如果Java端的字节序与发送的字节序不同,如何在它们之间转换?
94 java  endianness 


13
该程序如何工作?
#include <stdio.h> int main() { float a = 1234.5f; printf("%d\n", a); return 0; } 它显示一个0!! 那怎么可能?这是什么原因? 我故意%d在printf声明中加入,以研究的行为printf。
88 c++  c  memory  printf  endianness 

1
为什么将网络字节顺序定义为big-endian?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 如标题中所述,我的问题是,为什么TCP / IP在传输数据时使用大端编码,而不是替代的小端编码?

7
C / C ++:强制位字段顺序和对齐
我读到,结构中位字段的顺序是特定于平台的。如果我使用不同的特定于编译器的打包选项,那该如何保证数据在写入时以正确的顺序存储?例如: struct Message { unsigned int version : 3; unsigned int type : 1; unsigned int id : 5; unsigned int data : 6; } __attribute__ ((__packed__)); 在具有GCC编译器的Intel处理器上,这些字段如图所示布置在内存中。Message.version是缓冲区的前3位,然后Message.type是。如果我为各种编译器找到了等效的struct包装选项,这是否可以跨平台使用?


8
Endianness什么时候成为一个因素?
据我了解,字节序是指组成多字节字的字节的顺序不同,至少在最典型的情况下如此。这样16位整数可以存储为0xHHLL或0xLLHH。 假设我没有记错,我想知道的是,Endianness何时成为在两台计算机之间(Endian可能不同)的主要因素,而Endian可能不同。 如果我以char数组的形式传输短整数1,并且没有进行任何更正,是否接收并将其解释为256? 如果我使用以下代码分解和重新组合短整数,则字节序将不再是一个因素吗? // Sender: for(n=0, n < sizeof(uint16)*8; ++n) { stl_bitset[n] = (value >> n) & 1; }; // Receiver: for(n=0, n < sizeof(uint16)*8; ++n) { value |= uint16(stl_bitset[n] & 1) << n; }; 是否存在补偿字节序的标准方法? 提前致谢!

5
按位运算符和“字节序”
是否字节顺序在所有问题与位操作?任一逻辑或移位? 我正在从事按位运算符的作业,我无法在上面做任何事情,而且我想我对持久性很感兴趣。就是说,我使用的是小端机(就像大多数机器一样),但这是否需要考虑?或者这是一个浪费的事实? 万一重要,我正在使用C。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.