Should I use binary(16)
or varbinary(16)
?
I know I can use getAddress()
in java.net.InetAddress
(Java) or System.Net.IPAddress
(C#) to get a byte[]
representation of both IPv4
and IPv6
, but if I need to insert IPv4
i.e. binary(4)
into a binary(16)
field in SQL Server
, do I need to worry about padding or anything?
ЕСЛИ вы сохраните двоичный(4)
в столбце двоичный(16)
, вы получите обратно, когда вы его прочитаете, заполненный значение длины 16. Если вы хотите иметь динамическую длину, вы должны использовать varbinary(16)
. Этот тип сохраняет длину вставленных данных за счет добавления дополнительных 2 байтов на диск (фактическая длина).
Используйте встраивание адресов v4-in-v6 для преобразования адресов ipv4 в формат ipv6; тогда вы можете относиться ко всем одинаково.