我使用的Inet6Address.getByName("2001:db8:0:0:0:0:2:1").toString()方法来压缩IPv6地址,输出是2001:db8:0:0:0:0:2:1,但我需要2001:db8::2:1.,基本上压缩输出应该基于RFC 5952标准,即
1)尽可能缩短:例如,2001:db8:0:0:0:0:2:1必须缩短为
2001:db8 :: 2:1.Likewise,2001:db8 :: 0:1是不可接受,因为符号"::"可能已用于生成更短的表示形式2001:db8 :: 1.
2)处理一个16位0字段:符号"::"不得用于缩短一个16位0字段.例如,表示形式2001:db8:0:1:1:1:1:1是正确的,但2001:db8 :: 1:1:1:1:1不正确.
3)"::" 的放置选择 : =当在"::"的位置中有另一种选择时,必须缩短连续16位0场的最长运行时间(即,连续三个零的序列)字段在2001年缩短:0:0:1:0:0:0:1).当连续的16位0字段的长度相等时(即2001:db8:0:0:1:0:0:1),必须缩短第一个零位序列.例如,2001:db8 :: 1:0:0:1是正确的表示.
我还检查了堆栈溢出中的另一个帖子,但没有指定条件(示例选择放置::).
有没有java库来处理这个?有人可以帮帮我吗?
提前致谢.
我创建了一个存储IP地址的表.
CREATE TABLE ipdetails(
ip_address DECIMAL(16,4) NOT NULL,
vlan_id varchar(50)
);
但是,当我尝试插入表格时,它给了我一个错误:
INSERT INTO ipdetails VALUES (192.169.165.128, 'Sample1')
Run Code Online (Sandbox Code Playgroud)
无论如何,我可以在SQL表中存储一个带有大量小数位的数字,如果是这样,我应该使用什么数据类型?请指教.
提前致谢!
例如,具有CIDR的IPv6地址:2620:0:2d0:200 :: 7/32输出起始范围:2620:0:0:0:0:0:0:0:0结束范围:2620:0:ffff:ffff: ffff:ffff:ffff:ffff
如何用PL / SQL计算?