🗣 Wd提问: ip地址转换函数
🤖 Ai回答: IP地址转换函数通常用于在点分十进制表示法(如 192.168.1.1) 和 整数形式(如 3232235777) 之间进行转换。以下是几种常见编程语言中的实现方法:
✅ 1、Python 实现
将 IP 地址转为整数(IPv4)
python
def ip_to_int(ip):
parts = ip.split('.')
return (int(parts[0]) << 24) + (int(parts[1]) << 16) + \
(int(parts[2]) << 8) + int(parts[3])
示例
print(ip_to_int(192.168.1.1)) 输出: 3232235777
将整数转为 IP 地址
python
def int_to_ip(num):
return '.'.join([str((num shift) & 0xFF) for shift in (24, 16, 8, 0)])
示例
print(int_to_ip(3232235777)) 输出: 192.168.1.1
💡 使用 `socket.inet_aton()` 和 `socket.inet_ntoa()` 也可以实现:
python
import socket
ip = 192.168.1.1
packed = socket.inet_aton(ip)
num = int.from_bytes(packed, 'big')
print(num) 3232235777
反向
packed = num.to_bytes(4, 'big')
ip_back = socket.inet_ntoa(packed)
print(ip_back) 192.168.1.1
✅ 2、C/C++ 实现
c
include <stdio.h
include <stdint.h
include <string.h
// 点分十进制转整数
uint32_t ip_to_int(const char *ip) {
uint32_t result = 0;
char *endptr;
char *token = strtok((char*)ip, .);
for (int i = 0; i < 4; i++) {
if (token == NULL) break;
long val = strtol(token, &endptr, 10);
if (endptr == token val 255) return 0; // 错误处理
result = (result << 8) | (uint8_t)val;
token = strtok(NULL, .);
}
return result;
}
// 整数转点分十进制
void int_to_ip(uint32_t ip, char *buf) {
snprintf(buf, 16, %d.%d.%d.%d,
(ip 24) & 0xFF,
(ip 16) & 0xFF,
(ip 8) & 0xFF,
ip & 0xFF);
}
// 示例
int main() {
char ip[] = 192.168.1.1;
uint32_t num = ip_to_int(ip);
char buf[16];
int_to_ip(num, buf);
printf(%s %u %s\n, ip, num, buf);
return 0;
}
✅ 3、JavaScript 实现
javascript
function ipToInt(ip) {
const parts = ip.split('.').map(Number);
return (parts[0] << 24) + (parts[1] << 16) + (parts[2] << 8) + parts[3];
}
function intToIp(num) {
return [
(num 24) & 255,
(num 16) & 255,
(num 8) & 255,
num & 255
].join('.');
}
// 示例
console.log(ipToInt(192.168.1.1)); // 3232235777
console.log(intToIp(3232235777)); // 192.168.1.1
✅ 4、Java 实现
java
public class IPConverter {
public static long ipToInt(String ip) {
String[] parts = ip.split(\\.);
long result = 0;
for (String part : parts) {
result = (result << 8) + Integer.parseInt(part);
}
return result;
}
public static String intToIp(long ip) {
return String.format(
%d.%d.%d.%d,
(ip 24) & 0xFF,
(ip 16) & 0xFF,
(ip 8) & 0xFF,
ip & 0xFF
);
}
public static void main(String[] args) {
System.out.println(ipToInt(192.168.1.1)); // 3232235777
System.out.println(intToIp(3232235777)); // 192.168.1.1
}
}
🔍 补充说明
IPv4 地址共 32 位,可用一个 32 位无符号整数表示。
转换时注意字节序:网络字节序是大端(Big Endian),所以高位在前。
对于 IPv6,需要更复杂的处理(128 位)。
如果你有特定的使用场景(比如网络编程、日志解析、防火墙规则等),我也可以提供更优化或安全的版本。欢迎继续提问!
📣 商家广告 :
👍
0
👎
IP地址: 51.166.168.89
搜索次数: 0
提问时间: 2025-11-03 15:08:07
🛒 域名购买 :
yrnz.cn lf.gs 363.net.cn wzsx.net eg.cx 887.net.cn jqr.sale 43.gold ww.cq.cn 961.net.cn
❓️ 热门提问 :
web网页平面设计 自己买服务器与云服务器 字节云主机 php连接mysql 事务 企业如何选购服务器 企业服务器 租用 到期域名出售 .sd域名注册 nginx作为前端服务器 查域名能否注册 豌豆Ai站群搜索引擎系统
🌐 域名评估 :
zfxm.cn krkw.cn k.ln.cn xphone.bio f.cq.cn skxa.cn fv.hk gpbh.cn o.ah.cn an.cq.cn
⛏ 最新挖掘 :
凯里酸汤鱼 贵阳烤脑花 都匀毛尖茶 花溪牛肉粉 贵阳烤生蚝 贵阳烤豆腐 贵阳纸包鱼 贵阳特色菜
🖌 热门作画 :
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊 :
🔗 友情链接 :
乐山网站推广
谷歌优化公司
ai提问
🧰 站长工具 :Ai工具 whois查询 搜索
📢 温馨提示 :本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持 :本站由豌豆Ai 提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。