我应该使用binary(16)
还是varbinary(16)
?
我知道我可以在getAddress()
(Java)或java.net.InetAddress
(C#)中使用System.Net.IPAddress
来获得byte[]
和{{IPv4
的{{1}}表示1}},但如果我需要将IPv6
即IPv4
插入binary(4)
中的binary(16)
字段,我是否需要担心填充或其他任何内容?
答案 0 :(得分:15)
如果您在binary(4)
列中存储了binary(16)
,那么当您阅读它时,会有一个长度为16的填充值。如果您想拥有动态长度,则必须使用{ {1}}。此类型保留插入数据的长度,代价是在磁盘上添加额外的2个字节(实际长度)。
答案 1 :(得分:7)
使用v4-in-v6 address embedding将您的ipv4地址转换为ipv6格式;然后你可以完全相同地对待它们。