2010-05-28 11 views
7

प्रश्न: जब मैं एक नंबर करने के लिए आईपी पते 192.168.115.67 कनवर्ट करते हैं, इसे इस तरह से किया जाता है:
192 * 256 + 168 * 256 +115 * 256 + 67 * 256 = 3232265027

या इस तरह:
192 * 256 + 168 * 256 + 115 * 256 + 67 * 256 = 1131653312

मुझे दोनों प्रकार के ऑनलाइन मिलते हैं, और स्पष्ट रूप से इससे कोई फर्क नहीं पड़ता जब तक कि मैं एक ही रूपांतरण प्रक्रिया संस्करण का उपयोग कर सभी आंतरिक आईपी-रेंज तुलना करता हूं। लेकिन मैं IPv4 पता से आईपी वी 6 गणना करना चाहते हैं, और ऐसा लगता है दोनों वेरिएंट अलग IPv6 पतों में जिसके परिणामस्वरूप वेब पर हैं ... , और सिर्फ एक ही सही हो सकता है ...

मैं ११३१६५३३१२ का उपयोग संस्करण, 1131653312 के रूप में मैंने देखा है .NET मुझे दे रहा है, लेकिन 3232265027 वह संस्करण है जिसका उपयोग मैंने सी ++ में किया था, और यह भी आईपीवी 4 के लिए आईपीवी 6 रूपांतरण के लिए वेब पर मिलता है, और जिसे मैंने पहले इस्तेमाल किया था मैंने देखा कि .NET संस्करण 1131653312 का उपयोग करता है ...एक नंबर के लिए एक आईपी पते परिवर्तित:

उत्तर

5

के रूप में पहले नंबर आईपीवी 6 की आईपीवी 4 अनुकूलता भाग के उच्चतम बिट्स में संग्रहीत किया जाता विधि 3232265027 में जिसके परिणामस्वरूप, सही किया जाना चाहिए:

0000: 0000: 0000: 0000: 0000: ffff: AABB: CCDD

जहां

ए.ए. = 192
बी बी = 168
सीसी = 0
डीडी = 1

आदि

http://wikipedia.org/wiki/IPv6

इसके अलावा, आप एक आईपी पता में एक 256 नहीं हो सकता। मान 0 - 255 प्रत्येक हैं।

0

संख्याएं तार पर बड़े-एंडियन क्रम में भेजी जाती हैं, जो उनके लिखित तरीके के समान होती है (1 9 2 सबसे महत्वपूर्ण बाइट है)। इस प्रकार पहला नंबर "सही" है। अन्य संस्करण यह है कि कैसे एक ही बाइट्स को थोड़ा-अंतराल वास्तुकला पर व्याख्या किया जाएगा, इसलिए नेट व्यवहार।

यह सब कहकर, मुझे सच में यकीन नहीं है कि सवाल क्या है, इसलिए मैं केवल उम्मीद कर सकता हूं कि यह प्रदर्शनी एक प्रकार का उत्तर बनती है।

+0

सवाल यह है कि, सही (आईपी v6) दिए गए आईपी v4 के लिए कैसे दिखता है। –

+0

Quandary, इसे स्पष्ट करने के लिए अपने उत्तर में संशोधन करें। –

5

यह निश्चित रूप से पहला है। आप पिंग कर सकते हैं और देख सकते हैं कि पिंग उपयोगिता इसे a.b.c.d नोटेशन में कैसे परिवर्तित करती है। यदि आप यह रूपांतरण करने जा रहे हैं तो मैं अभिव्यक्ति की अनुशंसा करता हूं: (a << 24) | (b << 16) | (c << 8) | d

+0

क्यों डाउनवॉटिंग? – Andrey

+0

आप वास्तव में यह नहीं कह सकते हैं; यह अपने मंच की अंतहीनता पर निर्भर करता है। ठीक है, ठीक है, मुझे लगता है कि आप कर सकते हैं, क्योंकि .NET बिल्कुल अलग-अलग प्लेटफॉर्म पर पोर्ट नहीं किया गया है। लेकिन सिद्धांत रूप में, आप वास्तव में यह नहीं कह सकते हैं। –

+0

@ टी.ई.डी. एक संख्या के रूप में यह 3232265027 की तरह दिखेगा। दूसरा सवाल यह है कि यह स्मृति में कैसे संग्रहीत किया जाता है, और उस बिंदु पर मैंने बिल्कुल उल्लेख नहीं किया। – Andrey

0

अंतर endianness के साथ करना है। आप इसे एक पूर्णांक में संग्रहीत कर रहे हैं, लेकिन विभिन्न प्रोसेसर के पास उनके पूर्णांक (बड़े या छोटे अंत) के लिए अलग बाइट ऑर्डरिंग होते हैं। हालांकि, उस नंबर को लाइन पर बाहर जाना है, इसलिए आईपी के पास एक विशिष्ट ऑर्डर है जिसमें इसे स्थानांतरित बाइट्स की आवश्यकता होती है। यह आदेश बिगेंडियन और छोटी मशीनों के लिए अलग दिखता है।

+0

मुझे .NET क्रॉस के विभिन्न हार्डवेयर के बारे में बहुत कुछ पता नहीं है, हालांकि पूर्णांक के लिए सार बाइट स्थानांतरण के लिए नहीं है .net नहीं है? –

संबंधित मुद्दे