Guy*_*Guy 21 c# sql-server algorithm ipv6
在IPv4我已经解析IP地址的字符串表示Int32并将其存储INT在SQL Server.
现在,IPv6我试图找出是否有对的字符串表示解析标准或接受的方式IPv6在两个Int64使用C#?
人们如何将这些价值存储在SQL Server- 作为两个领域BIGINT?
Guf*_*ffa 19
正如IPv4地址实际上是32位数字一样,IPv6地址实际上是128位数字.地址有不同的字符串表示形式,但实际地址是数字,而不是字符串.
因此,您不会将IP地址转换为数字,而是将地址的字符串表示形式解析为实际地址.
甚至decimal不能容纳128位数字,因此留下三个明显的替代方案:
bigint字段varchar字段中存储地址的字符串表示形式binary字段中既不像在一个存储IPv4地址那样方便int,所以你必须考虑它们对你需要对地址做什么的限制.
Ric*_*ard 12
最简单的方法是让框架为您完成此操作.使用IPAddress.Parse解析地址,然后IPAddress.GetAddressBytes获得"数"为字节[].
最后,将数组划分为第一个和第二个8个字节,以便转换为两个Int64,例如,通过创建一个MemoryStream字节数组,然后通过a读取BinaryReader.
这避免了需要了解IPv6地址的所有可用快捷方式表示.
小智 5
如果您使用的是 SQL Server 2005,则可以使用该uniqueidentifier类型。该类型存储 16 个字节,非常适合 IPv6 IP 地址。您可以使用构造函数 和 来在IPAddress和之间进行转换。GuidToByteArray
| 归档时间: | 
 | 
| 查看次数: | 15537 次 | 
| 最近记录: |