पर htonl() और ntohl() के लिए समान आउटपुट मैंने छोटे-अंत [LE] मशीन [लिनक्स, इंटेल प्रोसेसर] पर निम्न प्रोग्राम चलाया। मैं नीचे कोड स्निपेट में 3 आउटपुट की व्याख्या करने में असमर्थ हूं। चूंकि मशीन ली है, a
का मान 0x78563412
के रूप में संग्रहीत किया जाता है। प्रिंट करते समय, यह अपना वास्तविक मूल्य प्रदर्शित कर रहा है। इसकी एक ली मशीन के बाद से, मैं ntohl()
को नो-ऑप होने और 0x78563412
प्रदर्शित करने की अपेक्षा करता हूं, जो यह कर रहा है। हालांकि, मुझे htonl()
युक्त दूसरे प्रिंट स्टेटमेंट के लिए 0x12345678
की उम्मीद है। क्या कोई मुझे समझने में मदद कर सकता है कि वे समान क्यों हैं?एक पूर्णांक
int main()
{
int a = 0x12345678;
printf("Original - 0x%x\n", (a));
printf("Network - 0x%x\n", htonl(a));
printf("Host - 0x%x\n", ntohl(a));
return 0;
}
आउटपुट:
Original - 0x12345678
Network - 0x78563412
Host - 0x78563412
जैसा कि नीचे उल्लिखित @Alok के रूप में, मैं उम्मीद कर रहा था कि निम्नलिखित व्यवहार हमेशा सत्य रहेगा: 'x == htonl (ntohl (x))'। लेकिन यह नहीं हो रहा है और आपकी व्याख्या बहुत उपयोगी थी। – Bhaskar
@ भास्कर: ब्रायन रोच का बिंदु भी महत्वपूर्ण है, फिर: आपने कभी भी 'एचटनएल (एनओटीएचएल (ए)) की गणना नहीं की। आपने 'htonl (ए) 'और' ntohl (ए) 'की गणना की। –
बहुत बहुत धन्यवाद! ग्रेट स्पष्टीकरण – Skully