首页 / 知识
字节序类型
2023-04-12 20:09:00

Types of endianness以下类型的字节序有什么区别?
还有其他类型/变体吗? 有两种方法进行字节序映射:地址不变性和数据不变性。 地址不变性 在这种类型的映射中,字节的地址始终在大和小之间保留。这具有使特定数据(例如2或4字节字)的有效顺序(最高有效到最低有效)颠倒的副作用,并因此颠倒了数据的解释。具体来说,在小字节序中,数据的解释对最重要的字节是最低有效的,而在大字节序中,数据的解释对于最不重要的字节是最重要的。在这两种情况下,访问的字节集保持不变。 示例 地址不变性(也称为字节不变性):字节地址是恒定的,但字节的重要性相反。
数据不变性 在这种类型的映射中,相对字节的重要性保留给特定大小的数据。因此,对于不同的数据大小,存在不同类型的数据不变字节序映射。例如,对于32位的原点,将使用32位字不变字节序映射。保留特定大小的数据值的效果是,在大字节序和小字节序映射之间,数据中字节的字节地址是相反的。 示例 32位数据不变性(也称为单词不变性):数据是一个32位单词,其始终具有值
示例 16位数据不变性(也称为半字不变性):数据是16位数据
示例 64位数据不变性(也称为双字不变性):数据为64位
Philibert说,
我怀疑任何体系结构都会破坏字节值不变性。当将包含位字段的结构映射到数据时,可能需要反转位字段的顺序。这种直接映射依赖于C99标准之外的编译器详细信息,但仍然可能很常见。直接映射速度更快,但不符合C99标准,该标准没有规定打包,对齐和字节顺序。符合C99的代码应基于值而不是地址使用慢速映射。也就是说,代替此操作,
一个人应该写这个(这就是即使对于上面的"直接映射",编译器仍然会生成代码的方式),
需要反转每个与字节序无关的特定于应用程序的数据存储单元中位字段顺序的原因是,编译器将位字段打包为增长地址的字节。 每个字节中的"位顺序"无关紧要,因为提取它们的唯一方法是应用值的掩码并转移到最低有效位或最高有效位方向。"位的顺序"问题仅在具有位地址概念的虚构体系结构中才变得重要。我相信所有现有的体系结构都会在硬件中隐藏该概念,并且仅提供最低有效位提取还是最高有效位提取,这是基于字节序中性字节值的概念。 也有中间或混合字节序。有关详细信息,请参见Wikipedia。 我唯一需要担心的是在C语言中编写一些网络代码。网络通常使用大端IIRC。大多数语言要么抽象整个内容,要么提供库以确保您使用正确的字节序。 我读过的有关字节序的最佳文章"了解字节序和字节序"。 实际上,我将机器的字节序描述为单词中字节的顺序,而不是位的顺序。 这里的"字节"是指"体系结构可以单独管理的最小内存单元"。因此,如果最小单位为16位长(x86中的字将被称为一个字),则可以存储表示值0xFFFF0000的32位"字",如下所示:
或此:
在内存中,取决于字节顺序。 因此,如果您具有8位字节序,则意味着每个包含16位的字都将存储为:
或:
以此类推。 13年前,我研究了可同时用于DEC ALPHA系统和PC的工具。在该DEC ALPHA上,位实际上已反转。即:
实际翻译为
在C代码中,它几乎是透明且无缝的,只是我有一个声明为 的位域。
需要翻译的内容(使用#ifdef条件编译)
实际上,内在性是指处理器将解释给定存储位置的内容的方式。例如,如果我们具有以下内容(十六进制字节)的存储器位置0x100
您需要注意耐力性的两种情况是使用网络代码以及是否使用指针进行强制转换。 TCP / IP指定线路上的数据应为大端字节序。如果传输字节数组以外的其他类型(如指向结构的指针),则应确保使用ntoh / hton宏来确保数据以大端序发送。如果从小端处理器发送到大端处理器(反之亦然),则数据将出现乱码... 铸造问题:
数据的价值是什么? 基本概念是位的顺序:
little-endian中的 与 相同
在大尾数法中(反之亦然)。 您会注意到顺序是按分组而不是按单个位进行更改的。我不知道系统,例如,
将是第一个版本的"其他字节序"版本。 |
最新内容
相关内容
如何用python将数据导出
如何用python将数据导出,数据,情况,分析,代码,培训,文件,表格,难事,后面,以上,Python的一大应用就是数据分析了,而数据分析中,经常碰到需要处理pythondict是什么类型
pythondict是什么类型,培训,数字,字典,类型,数据类型,冒号,括号,逗号,字符串,容器,python中的dict表示的字典数据类型。字典是另一种可变容器python input() 类型是什么
python input() 类型是什么,培训,标准,数据,函数,字符串,内容,用户,程序,过程,整数,python3.x中input()函数接受一个标准输入数据,返回为strinpython 培训之 object是什么类型
python 培训之 object是什么类型,培训,类型,实例,顶端,对象,关系,链条,父子,数据类型,属性,在Python的世界中,object是父子关系的顶端,所有的数python能判断一个变量的类型吗
python能判断一个变量的类型吗,培训,类型,对象,变量,函数,实例,语法,以上,参数,结果,python中是可以判断对象的类型的,判断python中的对象类型python爬虫和数据分析有哪些第三方
python爬虫和数据分析有哪些第三方库?,培训,爬虫,和数,以上,更多,内容,以上内容为大家介绍了爬虫和数据分析有哪些第三方库,希望对大家有所python数据分析相关的技术
python数据分析相关的技术,分析,数据,培训,技术,python爬虫和数据分析有哪些第三方
python爬虫和数据分析有哪些第三方库?,培训,爬虫,和数,python如何连接mysql数据库
python如何连接mysql数据库,培训,数据,项目,一致,流程,数据库,参数,结果,接口,语句,python数据库接口支持非常多的数据库,你可以选择适合你项python声明变量类型
python声明变量类型,培训,代码,基础,变量,赋值,类型,字符串,语句,函数,上面,对于没有编程基础的读者,可以先不编写真正的Python程序,而是先打开python定时修改数据库
python定时修改数据库,时间,服务,培训,单位,代码,标准,线程,操作,时间差,进程,1.传入执行改库操作的时间update_time,用update_time和当前时间python常见的数据类型转换函数有哪
python常见的数据类型转换函数有哪些?,培训,数据类型,函数,