c# - 将 IP 转换为字节/转换回字符串

标签 c# .net ip bytearray

我将 IPV4 地址作为 Binary(4) 存储在 SQLSERVER 2008 数据库中。因此,我在数据输入之前转换值(并且由于公司限制我不能在数据库中创建函数,所以这不值得讨论)。

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(); 
}

调用IpToBin后,生成的数据为(例如0x59FC09F3)。当我调用 HexToIp 时,ip 可能由于小/大端转换而反转。

谁能想出一个没有 500 亿行代码的像样的解决方案?

最佳答案

我认为这里真正的问题是您将原始表单视为字符串;特别是因为它是 binary(4),您永远不必这样做:只需将它作为 byte[] 从数据库中取回即可。 IpToBin 没问题,但 HexToIp 应该是:

public static IPAddress BinToIp(byte[] bin)
{
    return new IPAddress(bin);
}

然后:工作完成。但是对于现有的 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(); 

关于c# - 将 IP 转换为字节/转换回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14499482/

相关文章:

c# - 在 C# 中集成 Powershell

c# - 从选项卡注销,不适用于所有其他选项卡

c# - .NET 中的外部翻译

linux - Rabbitmq 服务器启动失败

docker - 如何使用DHCP地址本地主机配置Docker容器?

c# - 从 C# .NET 应用程序调用 C/C++ 代码

c# - 你能帮我在一个实际的例子中理解抽象类和接口(interface)的用法吗?

c# - 在这种情况下 Dispose() 会导致提前释放资源吗?

java - 如何为主机名构建正则表达式?

c# - 保护共享主机上的连接字符串