Linux网络编程---字节排序函数

18 篇文章 3 订阅
17 篇文章 1 订阅

整数 在计算机内存中的 存储方式 有两种,一种是 大端模式,一种是 小端模式。这两种方式统称为 字节序
不同的系统之间采用的字节序可能也是不同的。
对于 某个给定的系统,它采用的字节序被称为 主机字节序
不同于具体系统,网络协议仅使用 大端模式 作为字节序(网络字节序)。
为此,在网络编程中,需要关注 主机字节序与网络字节序之间的转换

Linux中,这两种字节序的转换使用如下的四个函数:

extern uint32_t ntohl (uint32_t __netlong)
     __THROW __attribute__ ((__const__));
extern uint16_t ntohs (uint16_t __netshort)
     __THROW __attribute__ ((__const__));
extern uint32_t htonl (uint32_t __hostlong)
     __THROW __attribute__ ((__const__));
extern uint16_t htons (uint16_t __hostshort)
     __THROW __attribute__ ((__const__));

这四个函数在文件netinet/in.h
__THROW 表示这个函数在 C++ 代码中支持抛出异常的操作。
不过,它在 C 中没有什么用处。

在这些函数中,h代表hostn代表networks代表shortl代表longuint16_t为16位无符号整型数,uint32_t为32位无符号整型数。

ntohl()ntohs()可以分别被用于 IP地址端口号
这个位置 有一个应用的例子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值