zoukankan      html  css  js  c++  java
  • 字节操作函数

    这里介绍两组地址转换函数,他们在ASCII字符串与网络字节序的二进制之间转换网际地址。

    l inet_aton、inet_addr和inet_ntoa在点分十进制数串(如:“127.0.0.1”)与它的长度为32位的网络字节序二进制值间转换IPv4地址。

    l 两个新的函数:inet_pton和inet_ntop对于IPv4和IPv6都适用。

    clip_image002

    clip_image004

    l inet_addr()将一个char型字符串转换为32位的IPv4网络字节序,如果失败则返回INADDR_NONE;该函数存在一个问题,所有223个可能的二进制值都是有效的IP地址(从0.0.0.0~255.255.255.255)!!!!但是当出错时该函数返回INADDR_NONE,这就意味着点分十进制数串255.255.255.255(这是IPv4的有限广播地址)不能由该函数处理,因为它的二进制数值被用来指示该函数失败。

    所以尽量使用

    l inet_aton()和inet_addr()功能一样,但更加改进,在UNIX下建议使用;返回的结果转换为一个32位网络序二进制值,通过指针strptr所指;

    l inet_ntoa()将一个32位网络字节序的二进制IPv4地址转换成相应的十进制字串。由该函数的返回值所指向的字符串驻留在静态内存中。这就意味着该函数是不可重入的。

    clip_image006

    clip_image008

    这两个函数适用于IPv6地址,兼容IPv4,建议尽量使用它们。其中:

    p:presentation--表达;

    n:numeric—数值;

    其中,Family可以是AF_INET也可以是AF_INET6;

    inet_pton尝试转换由pszAddrString指针所指的字符串,通过pAddrBuf存放二进制结果;

    若成功则返回1,否则返回0;

    inet_ntop则相反,从数值转换为表达式,len参数是目标存储单元的大小,以避免函数溢出其调用者的缓冲区。为有助于指定这个大小,有如下定义:

    clip_image009

    如果len太小,不足以容纳表达式结果,那么返回一个空指针,并使errno为ENOSPC;该函数的pStringBuf不可以是一个空指针,调用者必须为目标存储单元分配内存并指定其大小。

  • 相关阅读:
    【题解】P1999 高维正方体
    【题解】 P1850 [NOIP2016 提高组] 换教室(又是一道debug的DP,debug经验++)
    【题解】P1439 【模板】最长公共子序列
    【笔记】还是发上来作为学习过的记录吧,凌乱,勿进
    为什么我不会做数位DP
    【题解】HUD3652 B-number && 数位DP学习笔记
    【题解】LIS(longest increasing subsequence)最长上升子序列
    lingo重点部分快速上手
    koa2转移json文件地址
    Koa2创建项目
  • 原文地址:https://www.cnblogs.com/davidsguo008/p/3582057.html
Copyright © 2011-2022 走看看