将十六进制参数转换成点分十进制 -- 将点分十进制参数转换成十六进制

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

/*将十六进制参数转换成点分十进制
例如:0x8002c2f2  ->128.2.194.242
*/
int my_htonl(char *argv)
{
    struct in_addr inaddr;//网络字节序
    unsigned int addr;//点分十进制

    sscanf(argv, "%x", &addr);
    inaddr.s_addr = htonl(addr);
    printf("%s/n", inet_ntoa(inaddr));

    return 0;
}


/*将点分十进制参数转换成十六进制
例如: 128.2.194.242->0x8002c2f2
*/
int my_ntohl(char * argv)
{
    struct in_addr inaddr;//网络字节序
    unsigned int addr;//点分十进制

    if(inet_aton(argv, &inaddr) != 0){
        addr = ntohl(inaddr.s_addr);
        printf("0x%x/n", addr);
    }
    return 0;
}



int main( )
{
    char * test_arry1  = "0x8002c2f2";
    char * test_arry2  = "128.2.194.242";

    my_htonl(test_arry1 );
    my_ntohl(test_arry2);
    return 0;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值