問題: 當我的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