2010-03-10 17 views

उत्तर

37

IPAddress.HostToNetworkOrder और IPAddress.NetworkToHostOrder?

प्रत्येक विधि में 16, 32 और 64 बिट पूर्णांक के लिए अधिभार है।

+0

मुझे लगता है कि ये 2 विधियां एक ही काम करती हैं। मुझे लगता है कि अधिभार केवल हस्ताक्षरित चीजों के लिए हैं। क्या वे हस्ताक्षरित चीजों पर सुरक्षित हैं? – pm100

+0

@ pm100: आप उन्हें आत्म-उलझन में रहने की उम्मीद करेंगे, हां। मैं दावा नहीं करना चाहूंगा कि पूर्ण तथ्य के लिए :) सुनिश्चित नहीं है कि "हस्ताक्षरित चीज़ों पर सुरक्षित" से आपका क्या मतलब है - आपको पहले डालना होगा, जिस बिंदु पर इसे हस्ताक्षरित नहीं किया जाएगा ... –

+1

पहले - यह देखते हुए कि जिन चीजों पर वे काम करते हैं, उनमें से एक बड़ी संख्या आईपी पतों जैसी चीजें होंगी, जो इस बात से आश्चर्यचकित हैं कि यूंट 32 के लिए कोई अधिभार नहीं है। 'सुरक्षित' से मेरा मतलब है कि मैं हस्ताक्षर किए गए हस्ताक्षर से सावधान हूं, बिट्स के साथ झुकाव और वापस कास्टिंग, आम तौर पर यह संकेत प्रसार/छिड़काव के लिए एक नुस्खा है ... wiednesses – pm100

0

@jon-skeet's answer आपके प्रश्न के अनुसार सबसे सटीक है। हालांकि, little-endian and big-endian computer architectures के बीच अनुवाद करने के लिए 'ntoh_' और 'hton_' सी फ़ंक्शंस का व्यापक रूप से उपयोग किया जाता है।

यदि आपका इरादा endianess रूपांतरण प्रदर्शन करने के लिए है, वहाँ एक BitConverter class (कोर विधानसभा में स्थिर वर्ग) यदि आप एक अधिक उपयुक्त तरीका लाता है। खासकर जब:

  • बाइट्स (व्यापक रूप से फ़ाइल या नेटवर्क स्ट्रीम में उपयोग किया जाता है) के साथ काम करना।
  • Detecting endianess रनटाइम मशीन का आर्किटेक्चर।
  • टाइपकास्टिंग के बिना पूर्णांक (बूलियन, दशमलव) से परे बुनियादी संरचनाओं को परिवर्तित करना।
  • आपका कोड नेटवर्क संचालन से संबंधित नहीं है (System.Net नेमस्पेस)।
+4

सिवाय इसके कि कक्षा में htonl के बराबर फ़ंक्शन नहीं है। मुझे बाइट्स प्राप्त करना होगा, उन्हें उलट देना होगा, फिर – pm100

+1

'बिट कनवर्टर' को वापस परिवर्तित करना होगा, किसी भी गैर देशी देशीता का समर्थन नहीं करता है। (कम से कम अंतर्निर्मित व्यक्ति नहीं करता है, जॉन या मार्क ने एक और शक्तिशाली बनाया जो करता है - लेकिन कचरा अस्थायी सरणी बनाना अभी भी एक अपशिष्ट है) –

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