首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >long.Parse和解析十六进制值到IPAddress C#时的新IPAddress行为

long.Parse和解析十六进制值到IPAddress C#时的新IPAddress行为
EN

Stack Overflow用户
提问于 2014-11-07 11:29:14
回答 3查看 1.1K关注 0票数 2

昨天我问了一个关于将HEX字符串转换成IP的问题,并在这里得到了答案:C#将十六进制转换为ip

问题是,当我使用这个函数时

代码语言:javascript
复制
var ip = new IPAddress(long.Parse(ipString, NumberStyles.AllowHexSpecifier));

它确实返回一个有效的IPAddress,但以相反的方式执行。例如:

六角弦:

代码语言:javascript
复制
c0a8000a

它应被分析为:

代码语言:javascript
复制
192.168.0.10

函数返回long.Parse()函数。

代码语言:javascript
复制
3232235530

但是在调用IPAddress构造函数之后,我的IP是

代码语言:javascript
复制
10.0.168.192 

而不是正确的那个。像Converter.aspx这样的在线工具运行得很好。它是小的还是大大小小的?我是要自己翻转绳子呢,还是有更简单的答案?

EN

Stack Overflow用户

发布于 2014-11-07 12:14:48

正如已经指出的,问题是您必须从主机字节顺序(litte )转换为网络字节顺序(大端字节)。您可以使用IPAddress.HostToNetworkOrder方法来完成以下操作:

代码语言:javascript
复制
var ip = new IPAddress(
  IPAddress.HostToNetworkOrder(
    int.Parse(ipString, NumberStyles.AllowHexSpecifier)
  )
);

注意,您需要使用int.Parse而不是long.Parse来工作,因为在IPv4地址中是32位,而不是64位。

此方法不涉及字符串转换或使用其他类(如BitConverter )来执行转换。

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26800243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档