当前位置:首页 科普知识 unicode big endian

unicode big endian

发布时间:2023-09-14 02:15:24

unicode big endian是一个英语单词。来源于乔纳森·斯威夫特的小说格列佛游记。小说中,小人国为水煮蛋该从大的一端(Big-End)剥开还是小的一端(Little-End)剥开而争论,争论的双方分别被称为Big-endians和Little-endians。

unicode big endian介绍

unicode big endian是一个英语单词。来源于乔纳森·斯威夫特的小说格列佛游记。小说中,小人国为水煮蛋该从大的一端(Big-End)剥开还是小的一端(Little-End)剥开而争论,争论的双方分别被称为Big-endians和Little-endians。

unicode big endian简介

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:最低位地址存放低位字节,可称低位优先,内存从最低地址开始按顺序存放(低数位数字先写)。最低位字节放最前面。

unicode big endianBig Endian解释

最低位地址存放高位字节,可称高位优先,内存从最低地址开始按顺序存放(高数位数字先写)。

最高位字节放最前面。

例如“汉”字的Unicode编码是6C49。如果将6C写在前面,就是big endian。

还是将49写在前面,就是little endian

unicode big endianBig Endian示例图

对于单一的字节(a byte),大部分处理器以相同的顺序处理位元(bit),因此单字节的存放方法和传输方式一般相同。

对于多字节数据,如整数(32位机中一般占4字节),在不同的处理器的存放方式主要有两种,以内存中0x0A0B0C0D的存放方式为例,分别有以下几种方式:

注: 0x前缀代表十六进制。

数据以8bit为单位:

地址增长方向

...

0x0A

0x0B

0x0C

0x0D

...

示例中,最高有效位(MSB, Most Significant Byte)是0x0A 存储在最低的内存地址处。下一个字节0x0B存在后面的地址处。正类似于十六进制字节从左到右的阅读顺序。

数据以16bit为单位:

地址增长方向

...

0x0A0B

0x0C0D

...

最高的16bit单元0x0A0B存储在低位。

测试大端小端的C代码:

#include<stdio.h>

int main()

{

unsigned int uiTest;

unsigned char *pucTmp = NULL;

uiTest = 0x12345678;

pucTmp = (unsigned char *)&uiTest; //指向&uiTest的第一个字节

if(*pucTmp == 0x78)

{

printf("This is Little Endiann");

}

else

{

printf("This is Big Endiann");

}

return 0;

}

温馨提示:
本文【unicode big endian】由作者 爱百科 转载提供。 该文观点仅代表作者本人, 自学教育网 信息发布平台,仅提供信息存储空间服务, 若存在侵权问题,请及时联系管理员或作者进行删除。
(c)2008-2025 自学教育网 All Rights Reserved 汕头市灵创科技有限公司
粤ICP备2024240640号-6