首页 > 其他分享 >网络字节序与主机字节序的转换函数实践

网络字节序与主机字节序的转换函数实践

时间:2022-10-08 22:11:44浏览次数:51  
标签:转换 字节 主机 uint16 内存 uint32 函数

首先需要了解知识:

1.字节序

(1)小端字节序,数值低位存储在内存的低地址,高位存储在内存的高地址。
(2)大端字节序,数值高位存储在内存的低地址,低位存储在内存的高地址。

  主机字节序,即CPU存储数据时采用的字节顺序。

转换方式:

1.64位数值的转换

使用联合体union

在使用联合体时需要根据联合体的特性,联合中所有成员,最终引用的是内存中相同的位置,其长度为最长成员的长度。

2.常用系统调用

在各文章中经常出现使用下面四个C标准库函数进行字节序间的转换。

uint32_t htonl(uint32_t hostlong); //把uint32_t类型从主机序转换到网络序

uint16_t htons(uint16_t hostshort); //把uint16_t类型从主机序转换到网络序

uint32_t ntohl(uint32_t netlong); //把uint32_t类型从网络序转换到主机序

uint16_t ntohs(uint16_t netshort); //把uint16_t类型从网络序转换到主机序

大概内容如上

标签:转换,字节,主机,uint16,内存,uint32,函数
From: https://www.cnblogs.com/wwwstar-2022/p/16770451.html

相关文章