Java:unicode big endian

Java:unicode big endian

endian词源

  “ endian ”一词来源于 乔纳森·斯威夫特 的小说 格列佛游记 。小说中, 小人国为水煮蛋该从大的一端(Big-End)剥开还是小的一端(Little-End)剥开而争论,争论的双方分别被称为Big-endians和Little-endians。
  1980年,Danny Cohen在其著名的论文" On Holy Wars and a Plea for Peace "中为平息一场关于 字节 该以什么样的顺序传送的争论而引用了该词。
   endian翻译为“字节序” ,又称 端序 尾序 。在 计算机科学 领域中, 字节序 是指存放多字节数据的字节(byte)的顺序,典型的情况是整数在 内存 中的存放方式和 网络传输 的传输顺序。Endianness有时候也可以用指 位序 (bit)。
  一般而言,字节序指示了一个UCS-2 字符 的哪个字节存储在低地址。如果LSByte在MSByte的前面,即LSB为低地址,则该字节序是 小端序 ;反之则是 大端序 。在 网络编程 中,字节序是一个必须被考虑的因素,因为不同的 处理器 体系可能采用不同的字节序。在多平台的代码编程中,字节序可能会导致难以察觉的 bug
   BIG ENDIAN 最低位地址存放高位字节,可称高位优先,内存从最低地址开始按顺序存放(高数位数字先写)。 最高位字节放最前面。
   LITTLE ENDIAN 最低位地址存放低位字节,可称低位优先,内存从最低地址开始按顺序存放(低数位数字先写)。 最低位字节放最前面。

编辑本段Big Endian解释

  最低位地址存放高位字节,可称高位优先,内存从最低地址开始按顺序存放(高数位数字先写)。最高位字节放最前面。
  例如“汉”字的Unicode编码是6C49。如果将6C写在前面,就是big endian。还是将49写在前面,就是little endian

编辑本段Big Endian示例图

  对于单一的 字节 a byte ),大部分 处理器 以相同的顺序处理 位元 (bit),因此单字节的存放方法和传输方式一般相同。
  对于多字节数据,如整数(32位机中一般占4字节),在不同的处理器的存放方式主要有两种,以 内存 中0x0A0B0C0D的存放方式为例,分别有以下几种方式:
   注: 0x前缀代表十六进制。  
   数据以8bit为单位 :
地址增长方向 →
... 0x0A 0x0B 0x0C 0x0D ...
示例中, 最高有效位 (MSB, Most Significant Byte)是0x0A 存储在最低的内存地址处。下一个字节0x0B存在后面的地址处。正类似于十六进制字节从左到右的阅读顺序。
   数据以16bit为单位 :
地址增长方向 →
... 0x0A0B 0x0C0D ...
最高的16bit单元0x0A0B存储在低位。 

你可能感兴趣的:(Java:unicode big endian)