浅谈大小端存储

最近学习SOCKET,将大小端存储做一个总结:

小端(Big-Endian)模式:  内存的低地址存数据的低位,内存的高地址存数据的高位。
大端(Little-Endian)模式:内存的低位存数据的高位,内存的高地址存数据的低位。


首先我们定义一个unsigned int i = 0x12345678;

我们看看内存中的存储


即:高内存地址保存高位0x12,依次向低内存地址保存0x34,0x56,0x78,所以这是小端存储。

我们经过一个Macro转换为大端存储:

#define CONVERT(N) (((unsigned int)N>>24)|((unsigned int)N<<24)|((((unsigned int)N>>16) & 0xff) <<8)|((((unsigned int)N>>8) & 0xff)<<16))


即:高内存地址保存高位0x78,依次向低内存地址保存0x56,0x34,0x12,所以这是大端存储。


在网络字节序中,一般指大端,所以在小端机器中我们需要转换成大端。

有4个函数实现这个过程:

htons:把unsigned short类型从主机序转成网络字节序
ntohs:把unsigned short类型从网络字节序转成主机序
htonl :把unsigned long类型从主机序转成网络字节序
ntohl : 把unsigned long类型从网络字节序转成主机序

我们在自己实现以上函数时候,需要判断此刻主机的字节序。

	unsigned int i= 0x12345678;
	char *p = (char *)&i;
或者

	union 
	{
		unsigned int i;
		char a[4];
	}myunion;
	myunion.i = 0x12345678;
判断与0x78的关系。


MySQL的存储引擎是插件式的,其最常用的两个存储引擎是MyISAM和InnoDB。MyISAM是MySQL默认的存储引擎,它没有太多人关注的原因可能是因为它在一些方面的性能和功能上相对较弱。然而,决定使用哪个存储引擎是一个复杂的问题,而我们可以聚焦于MyISAM和InnoDB这两个最常见的存储引擎。 在这两个存储引擎,InnoDB要求表必须有主键,因为它的数据文件本身按照主键聚集。而MyISAM可以没有主键。这是InnoDB与MyISAM之间的一个重要区别。 因此,当选择MySQL的存储引擎时,我们需要考虑不同存储引擎的特性和适用场景,以便根据需求选择最合适的存储引擎。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [浅谈MySQL存储引擎](https://blog.csdn.net/hanfeng529264/article/details/123352215)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [浅谈MySQL存储引擎选择 InnoDB与MyISAM的优缺点分析](https://download.csdn.net/download/weixin_38655484/12834006)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值