栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

阅读《Linux高性能服务器编程》随笔——小端字节序、大端字节序

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

阅读《Linux高性能服务器编程》随笔——小端字节序、大端字节序

文章目录
      • 计算机硬件有两种储存数据的方式:
      • 为什么会有这两种存储方式?
      • 使用程序判断主机的字节序

计算机硬件有两种储存数据的方式:

大端字节序(big endian)和小端字节序(little endian)。
举例来说,数值0x2211使用两个字节储存:高位字节是0x22,低位字节是0x11。

  • 大端字节序:高位字节在前,低位字节在后,这是人类读写数值的方法。
  • 小端字节序:低位字节在前,高位字节在后,即以0x1122形式储存。

同理,0x1234567的大端字节序和小端字节序的写法如下图:

为什么会有这两种存储方式?
  1. 因为计算机电路从低位开始处理数据,效率会比较高,所以,在早起的计算机内部处理都是小端字节序。现在的PC大多数采用小端字节序。
  2. 人类比较习惯读写大端字节序,因此,除了计算机内部,其他的场合几乎都是大端字节序,比如网络传输和文件存储。
使用程序判断主机的字节序
#include 
void byteorder()
{
	union
	{
		short value;
		char union_bytes[ sizeof( short ) ];
	} test;
	test.value = 0x0102;
	if (  ( test.union_bytes[ 0 ] == 1 ) && ( test.union_bytes[ 1 ] == 2 ) )
	{
		printf( "big endiann" );
	}
	else if ( ( test.union_bytes[ 0 ] == 2 ) && ( test.union_bytes[ 1 ] == 1 ) )
	{
		printf( "little endiann" );
	}
	else
	{
		printf( "unknown...n" );
	}

}

int main(){
	byteorder();
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/289783.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号