首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C/C+语言数据大端序、小端序的代码实现方法

引言

在C语言中,为了在不同的字节序之间进行转换,可使用socket库中的提供API转换函数,主要包括下面四个:

htons:把unsigned short类型从主机序转换到网络序

htonl:把unsigned long类型从主机序转换到网络序

ntohs:把unsigned short类型从网络序转换到主机序

ntohl:把unsigned long类型从网络序转换到主机序

代码实现

如对于整数0x12345678,在Windows系统上默认是小端序存储,将其转换为大端存储的方式,其C语言代码如下:

结论

其运行结果为:

在调试状态下,在内存窗口中查看变量a和变量b的地址,也可以清晰的看到两种字节序的不同存储情况。本例中变量a和变量b的地址分别为0x00B3FD3C和0x00B3FD24:

从运行结果可以加深小端序、大端序的理解:

小端序(Little-Endian)就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端,最符合人的思维的字节序,地址低位存储值的低位,地址高位存储值的高位。

大端序(Big-Endian)就是高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端,最直观的字节序,地址低位存储值的高位,地址高位存储值的低位。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190817A0DU7100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券