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

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

时间:2022-09-29 21:45:51浏览次数:50  
标签:字节 主机 函数 char addrptr CPU inet strptr

网络字节序:

网络字节序,是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。网络字节顺序采用big endian排序方式。

主机字节序:

主机字节序,即CPU存储数据时采用的字节顺序。不同的CPU设计时采用的字节序是不同的,谈到字节序的问题,必然牵涉到两大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86与x86_64(该指令集由AMD率先设计推出)系列CPU。PowerPC系列采用big endian方式存储数据,而x86与x86_64系列则采用little endian方式存储数据。平常大多数PC与服务器如果使用的是Intel与AMD CPU,一般都是little endian。

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

#include <arpa/inet.h>
int inet_aton(const char *strptr, struct in_addr *addrptr);
in_addr_t inet_addr(const char *strptr);
char* inet_ntoa(struct in_addr inaddr);

inet_aton将strptr所指c字符串转换成一个32位的网络字节序二进制值,并通过addrptr指针来存储。成功返回1,否则返回0.

inet_ntoa将一个32位的网络字节序二进制IPV4地址转换成相应的点分十进制数串。由于返回值所指向的字符串驻留在静态内存中,所以该函数是不可重入的。

#include <arpa/inet.h>
int inet_pton(int family, const char* strptr, void *addrptr);
const char* inet_ntop(int family, const void* addrptr, char* strptr, size_t len);

这两个函数的family参数可以是AF_INET、AF_INET6。如果以不支持的地址族作为这个参数,返回一个错误,erron置为EAFNOSUPPORT。

inet_pton尝试转换strptr所指字符串,并将二进制结果存放在addrptr中,成功返回1,失败返回0.

inet_ntop进行相反的转换,从数值格式(addrptr)转换到表达格式(strptr)。len参数是目标存储单元的大小,以免溢出其调用者的缓冲区。调用陈宫时strptr就是这个函数的返回值。

标签:字节,主机,函数,char,addrptr,CPU,inet,strptr
From: https://www.cnblogs.com/L4RRy/p/16743180.html

相关文章

  • 有趣的函数
    #include<stdio.h>intmain(){printf("%d",printf("%d",printf("%d",43)));}结果如图所示为什么是4321那?此题涉及两个知识1.回调函数2.printf的返回值要知道先执行再......
  • 指数族函数
    指数族函数待完善作者查阅了一些资料,全是公式函数名也陌生,所以这部分一直进行不下去。其实不用怕,只是提出了一类分布,这一类分布遵循着一些性质,具体推导过程甚至可以不了......
  • 鱼传科技:函数计算,只要用上就会觉得香
    简介: 复杂交互小程序如何应对访问量激增?深圳鱼传科技有限公司是专注以精准营销和互联网生态产品运营为核心的综合互联网营销推广服务商。通过整合全网优质媒体......
  • python使用win32api进行后台窗口的部分截图函数
    defwindow_capture_beat(hwnd,stayx:int,endx:int,stay:int,endy:int):hwndDC=win32gui.GetWindowDC(hwnd)mfcDC=win32ui.CreateDCFromHandle(hwndDC)......
  • 字节转kb及mb工具类
    /***byte(字节)根据长度转成kb(千字节)和mb(兆字节)**@parambytes*@return*/publicstaticStringbytes2kb(longbytes......
  • python 生成伪随机数函数 random
    """random函数:出一个伪随机数具体怎么做?一般我们会考虑先查找python官方自带的文档在IDLE的右上角点击HELP-->PythonDoc(F1)-->点击左上角的索引-->输入我们要......
  • 多种群遗传算法的函数优化算法(附MATLAB代码)
    最近小编终于重新拿起智能优化算法的圣经《MATLAB智能算法30个案例分析(第2版)》,每次读这本书都会有新的收获,今天要与大家分享的智能算法是多种群遗传算法。PS:文中代码来源于......
  • VRPTW合集 [CW节约算法,TS(硬约束版),TS(惩罚函数版),LNS四种方法对比(附MATLAB代码)]
    01方法回顾VRPTW系列推文终于要告一段落了,最初小编写了一篇最基本的节约算法构造VRPTW初始解推文;然后在这个基础上,小编尝试用3种不同的策略在所构造的初始解的基础上,进一步......
  • Mysql取整函数
    Mysql取整函数1.round四舍五入取整round(s,n):对s四舍五入保留n位小数,n取值可为正、负、零.如四舍五入到整数位,则n取零.2.ceil向上取整ceil(s):返回比s大的最小整数3.floo......
  • React函数组件和类组件的区别
    区别函数组件的性能比类组件的性能要高,因为类组件使用的时候要实例化,而函数组件直接执行函数取返回结果即可。为了提高性能,尽量使用函数组件。区别函数组件类组件是否有 ​......