google 了很久也找不到计算方法
|
elfiveJan 20, 2023 via iPhone
1
按位对比就行了呀……
如果 ( IP & Mask ) == (上面列表的 IP & 对应的 Mask )就说明在里面 |
|
dzdhJan 20, 2023
3
ipv4 地址一共 4,294,967,296 个。你是要同时不满足 cidr 范围的所有 ipv4 地址的一个完整列表么?
|
|
leonshawJan 20, 2023
5
区间拆分就行了
|
|
6
取相反范围的话,我会简单粗暴的,先合并 cidr ,然后转十进制排除掉,就像从 1-9 排除掉 3-5 得到 1-2 和 6-9
|
|
eason1874Jan 20, 2023
7
#6 说转十进制不太对,应该叫转 long ip
|
|
11
@edis0n0 “排除指定 IP 段以外的所有 IP 地址段”,如果只需要结果不需要算法的话,这里有个用于计算 wireguard allowedips 的 py 脚本可以做到:
https://www.lautenbacher.io/en/lamp-en/wireguard-exclude-a-single-ip-address/ |
|
folnetJan 20, 2023
12
python 用 netaddr 进行判断
|
|
bao3Jan 21, 2023 via iPhone
13
你把这些 IP 的掩码转化成二进制,对比二进制就行了
|
|
qingchengJan 21, 2023
14
如果要网段或者 IP 少的话逐一比对就可以了,匹配大量 IP 和大量子网的话就用 Trie 吧
|
|
ChristianSwiftJan 21, 2023 via iPhone
15
为什么不问问神奇的 ChatGPT 呢
|
|
UnknoownUserJan 23, 2023 via iPhone
16
使用 32 个变量的逻辑运算,一位就是一个 x ,把表达式写出来,用二元决策图( BDD )计算
|
|
zmcityJan 28, 2023
17
开一个 256 长度的 bool 数组查表呗。
|