Skip to content

ipToNumber 函数详解 ​

🔢 script.js 把点分 IP 字符串转成小端 uint32。

📎 源码在线查看:script.js#L194-L218(ipToNumber)

做什么 ​

javascript
function ipToNumber(ip) {
    var ipArr = ip.split(".");
    var num = "";
    ipArr.forEach(function (item) {
        var a = parseInt(item);
        num += ("0" + a.toString(16)).slice(-2);
    });
    return parseInt(num, 16);
}

把 "192.168.1.1" → 各段转 hex 拼接 → parse 回 uint32。

示例 ​

输入中间 hex输出 uint32
"192.168.1.1""c0a80101"3232235777

注意:这里得到的是大端排列的整数(192 在最高字节),但因为是 parseInt,数值本身是固定的。后续 ntohl 再决定内存字节序。

与 ntohl 的配合 ​

ipToNumber 给出数值,ntohl 调整端序表示。两者一起把点分串转成 message 用的 uint32。

IPv4-mapped IPv6 处理 ​

sockAddr.ip 可能是 ::ffff:192.168.1.1,ipToNumber 前需先 split(":").pop() 取出 IPv4 部分。

相关文档 ​

基于 VitePress 构建 · 教学用途