怎么将字符串进行网络字节序转换 示例

怎么将字符串进行网络字节序转换 示例,第1张

现在一般使用inet_aton和inet_ntoa来处理网络字节和主机字节之间的转换

有两个更新的函数inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6,原型如下

#include <sys/types.h>

#include <sys/socket.h>

#include <arpa/inet.h>

int inet_pton(int af, const char *src, void *dst)

这个函数转换字符串到网络地址,第一个参数af是地址族,转换后存在dst中

inet_pton 是inet_addr的扩展,支持的多地址族有下列:

AF_INET

src为指向字符型的地址,即ASCII的地址的首地址(ddd.ddd.ddd.ddd格式的),函数将该地址

转换为in_addr的结构念灶体,并复制在*dst中

AF_INET6

src为指向IPV6的地址,,函数将该地址

转换为in6_addr的结构体,并复制在*dst中

如果函数出错将返回一个负值,并将errno设置为EAFNOSUPPORT,如果参数af指定的地址族和src格式不对,函数将返回0。

函数inet_ntop进行相反的转换原型如下

#include <sys/types.h>

#include <sys/socket.h>

#include <仔乎扮arpa/inet.h>

const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt)

这个函数转换网络二进制结构到ASCII类型的地址,参数的作用和上面相同,只是多了一个参数socklen_t cnt,他是所指向缓存区dst的大小,避免溢出,如果缓存区太小无法存储地址的值,则返回一个空顷升指针,并将errno置为ENOSPC

unsigned short a = 0x1122

unsigned short b = (a>咐中哪>8) || (a<<8)

其中衡码b就是网络字节序培洞(大端)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12488675.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-25
下一篇2025-08-25

发表评论

登录后才能评论

评论列表(0条)

    保存