昨天我问了一个关于将HEX字符串转换成IP的问题,并在这里得到了答案:C#将十六进制转换为ip
问题是,当我使用这个函数时
var ip = new IPAddress(long.Parse(ipString, NumberStyles.AllowHexSpecifier));它确实返回一个有效的IPAddress,但以相反的方式执行。例如:
六角弦:
c0a8000a它应被分析为:
192.168.0.10函数返回long.Parse()函数。
3232235530但是在调用IPAddress构造函数之后,我的IP是
10.0.168.192 而不是正确的那个。像Converter.aspx这样的在线工具运行得很好。它是小的还是大大小小的?我是要自己翻转绳子呢,还是有更简单的答案?
发布于 2014-11-07 12:14:48
正如已经指出的,问题是您必须从主机字节顺序(litte )转换为网络字节顺序(大端字节)。您可以使用IPAddress.HostToNetworkOrder方法来完成以下操作:
var ip = new IPAddress(
IPAddress.HostToNetworkOrder(
int.Parse(ipString, NumberStyles.AllowHexSpecifier)
)
);注意,您需要使用int.Parse而不是long.Parse来工作,因为在IPv4地址中是32位,而不是64位。
此方法不涉及字符串转换或使用其他类(如BitConverter )来执行转换。
https://stackoverflow.com/questions/26800243
复制相似问题