问题: 当我的IP地址192.168.115.67转换成一个数字,它是这样完成的:
192 * 256 + 168 * 256 +115 * 256 + 67 * 256 = 3232265027
或这样的:
192 * 256 0 + 168 * 256 + 115 * 256 2 + 67 * 256 = 1131653312
我在网上找到了两种变种,坦白地说,只要我使用相同的转换过程变体进行所有内部IP范围比较,这并不重要。 但我想从IPv4地址计算IP V6,看起来两个变种都在网上... 导致不同的IPv6地址,只有一个可以正确...
我使用1131653312变体,因为1131653312是我看到.NET给出的变体,但是3232265027是我在C++中使用的变体,也是我在Web上发现的用于IPv4到IPv6转换的变体,以及之前我使用过的变体我看到.NET使用变种1131653312 ...转换的IP地址到一个数字:
回答
导致3232265027
的方法应该是正确的,如在第一号被存储在IPv6中的IPv4兼容性部的最高位:
0000:0000:0000:0000:0000:FFFF:AABB: CCDD
其中
AA = 192
BB = 168
CC = 0
DD = 1
等
http://wikipedia.org/wiki/IPv6
而且,你不能有一个IP地址的256
。值是每个0 - 255。
数字在网络上以big-endian顺序发送,与写入方式相同(192是最重要的字节)。因此,第一个数字是“正确的”。另一个变体是如何在一个小端架构上解释相同的字节,因此.Net行为。在说了这么多之后,我真的不确定这个问题是什么,所以我只能希望这个博览会构成各种答案。
它绝对是第一个。您可以ping通并查看ping实用程序如何将其转换为a.b.c.d表示法。如果你打算做这种转换,我推荐使用表达式:(a << 24) | (b << 16) | (c << 8) | d
与endianness的区别在于。您将它存储在一个整数中,但不同的处理器对于它们的整数具有不同的字节顺序(首先大或小)。但是,这个数字必须超出界限,因此IP具有特定的顺序,它需要传输字节。该顺序看起来不同于生物传感器和小型机器。
我不太了解.NET跨越不同的硬件,但是不是.net提供了整数抽象字节转换? – 2012-06-09 01:12:46
- 1. 将IP数据包从一个IP地址转发到另一个IP地址
- 2. MAC地址到IP转换
- 3. 转换[NSNetservice地址]到IP地址的字符串
- 4. 如何将IP地址转换为MAC地址字节数组?
- 5. 转换IP范围的IP地址
- 6. 转换IP地址的整数
- 7. 转换IP地址字节在Python
- 8. 将IP地址转换为IP范围
- 9. 添加一个数字IP地址
- 10. 将负数转换为IP地址python
- 11. 将整数值转换为IP地址
- 12. 如何将一个IP地址转换为本地网络中的另一个IP地址?
- 13. 转换IP地址(IPv4)itno一个整数在R
- 14. 转换IP地址的字节C#数组
- 15. 一个IP地址的字段验证
- 16. 完善SQL二进制到IP地址字符串转换
- 17. 的ByteArray到一个IP地址蟒蛇
- 18. 转发一个网址到IP的Plesk
- 19. 如何将一个IP地址转换为一个整数与Lua?
- 20. 将字节数组转换为IP地址
- 21. 在tcl中将IP地址转换为数字
- 22. 使用正则表达式替换另一个IP地址的IP地址
- 23. 变换IP地址,IP地址范围(起始IP - 结束IP)
- 24. 转换十六进制字符串到数字IP地址在PHP
- 25. 替换IP地址?
- 26. 转换4个32位整型到IP地址在java中
- 27. 试图IP地址转换为一个URL在C#
- 28. 转换浮到十进制(IP地址参数)
- 29. 如何将MAC地址转换为相应的IP地址?
- 30. 转换x500电子邮件地址到一个smtp地址
问题是,(正确的)IP v6如何查找给定的IP v4。 – 2010-05-28 11:39:47
窘境,修改你的答案以说清楚。 – 2010-05-28 11:46:03