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?
IF you store a
binary(4)in abinary(16)column you’ll get back, when you read it, a padded value of length 16. If you want to have dynamic length you must use avarbinary(16). This type retains the length of the data inserted, at the cost of adding extra 2 bytes on-disk (the actual length).