Ale*_*dre 5 .net c# ip bytearray
我将SQLVERVER 2008数据库上的IPV4地址存储为二进制(4).所以,我在数据输入之前转换值(并且由于公司的限制,我不能在数据库中创建函数,这不是讨论的问题).
public static byte[] IpToBin(string ip)
{
return IPAddress.Parse(ip).GetAddressBytes();
}
public static string HexToIp(string ip)
{
return new IPAddress(long.Parse(ip, NumberStyles.HexNumber)).ToString();
}
Run Code Online (Sandbox Code Playgroud)
调用IpToBin后,生成的数据为(例如0x59FC09F3).当我调用HexToIp时,ip反转可能是由于很少/大端转换.
任何人都可以提出一个没有500亿行代码的合适解决方案吗?
我认为这里真正的问题是你将原始形式视为一个字符串; 特别是因为它是binary(4),你永远不应该这样做:只需从数据库中取回它作为byte[].IpToBin很好,但HexToIp应该是:
public static IPAddress BinToIp(byte[] bin)
{
return new IPAddress(bin);
}
Run Code Online (Sandbox Code Playgroud)
然后:完成工作.但是使用现有HexToIp代码,您需要:
return new IPAddress(new byte[] {
Convert.ToByte(ip.Substring(0,2), 16), Convert.ToByte(ip.Substring(2,2), 16),
Convert.ToByte(ip.Substring(4,2), 16), Convert.ToByte(ip.Substring(6,2), 16)}
).ToString();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9686 次 |
| 最近记录: |