十六进制IP转换点分十进制代码

以下是一个可以实现将输入的十六进制格式的IP地址转换为点分十进制格式并输出的简单程序。它使用了 sscanf 函数将输入的字符串解析成无符号整数,然后使用 inet_ntoa 函数将其转换成点分十进制格式,并打印输出:

c 复制代码
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main() {
    char hex_ip[9]; // 用于存储输入的十六进制格式的IP地址,需要8个字符的空间,加上字符串结尾符'\0'共9个字符
    printf("请输入一个十六进制格式的IP地址:");
    scanf("%8s", hex_ip); // 读入输入的十六进制格式的IP地址,最多只读入8个字符

    unsigned int ip_val;
    sscanf(hex_ip, "%x", &ip_val);

    struct in_addr addr;
    addr.s_addr = htonl(ip_val);

    char *ip_str = inet_ntoa(addr);
    printf("对应的点分十进制格式IP地址为:%s\n", ip_str);

    return 0;
}

当您运行以上代码时,它将首先提示您输入一个十六进制格式的IP地址。请务必确保输入的字符串是正确的,且长度不超过8个字符(不包括字符串结尾符'\0')。

此外,,inet_ntoa 函数返回的是静态分配的内存空间,多次调用该函数会覆盖先前的结果。如果您需要在程序中保存多个IP地址,请将其复制到其他的内存区域或使用更加安全的函数进行转换。

相关推荐
IT小盘30 分钟前
04-大模型流式输出原理-SSE与Python实现
开发语言·网络·人工智能·python
巨量HTTP3 小时前
Python爬虫动态换IP实战,彻底解决IP403封禁、限流问题(附完整代码)
爬虫·python·tcp/ip·http
玖玥拾3 小时前
Unity 3D 笔记(十四)Unity/C# Socket 网络笔记3
服务器·网络·unity·c#
数智化管理手记4 小时前
财务大数据怎么管住资金风险?财务大数据和财务数智化到底怎么结合?
大数据·网络·数据库·人工智能·数据挖掘
CPETW4 小时前
企业版配套软件介绍 ---- USB TO SPI_ (Excel)-Microwire
网络·科技·单片机·嵌入式硬件·电子
三8445 小时前
使用Samba/NFS实现文件共享/自动挂载共享目录/autofs自动挂载服务
linux·服务器·网络
计算机魔术师5 小时前
宇树发布轮足机器人 As2-W:6m/s速度、IP54防水、30km续航
网络·机器人
Bobolink_5 小时前
跨境网络“无限流量”套餐的真实用法,买之前先看懂细则
网络·流量·跨境网络
玖玥拾6 小时前
Unity 3D 笔记(十七)Unity/C# Socket 网络笔记6
服务器·网络·unity·c#
XTIOT6666 小时前
零部件 DPM 码扫码枪生产厂家:工业 DPM 设备多工位组网与 MES/ERP 数据集成方案
网络·单片机·嵌入式硬件·物联网·计算机视觉