मैं कुछ विरासत कोड के साथ काम कर रहा हूं और मैं एक ऐसे फ़ंक्शन में आया जो स्पष्ट रूप से एक मनमाने ढंग से लंबे क्षेत्र (नेटवर्क से अधिक बड़ा हो सकता है) पर नेटवर्क बाइट ऑर्डर रूपांतरण करने के लिए उपयोग किया जाता है।यह वास्तव में क्या करता है? - पागल सी ++ फ़ंक्शन
मैं यह बताने के लिए पर्याप्त रूप से पर्याप्त नहीं समझ सकता कि यह संदेश बफर रेंज पर बाइट ऑर्डर को वापस करने से कहीं ज्यादा कुछ कर रहा है (या भले ही यह विश्वसनीय रूप से करेगा)। क्या कोई मुझे इसे तोड़ने और इसका विश्लेषण करने में मदद कर सकता है ताकि मैं इसे किसी ऐसी चीज़ से बदल सकूं जो अधिक समझदार है (या कम से कम इसे अच्छी तरह से टिप्पणी करें) !?
void swapit(unsigned char *msg, int length) {
for(;length>0;length--, msg++) {
*msg = ((*msg * 0x0802LU & 0x22110LU) |
(*msg * 0x8020LU & 0x88440LU)) *
0x10101LU >> 16;
}
}
http://stackoverflow.com/a/746203/367273 देखें जहां यह फ़ंक्शन कई विकल्पों के साथ दिखाई देता है। उस आधार पर बंद करने के लिए वोटिंग। – NPE
एआरएम ... क्या मुझे इसे "यह पूरी तरह से सुरक्षित है और इसके बारे में चिंता न करें?" –
यह आप पर निर्भर है। यह स्पष्ट रूप से एक टिप्पणी का हकदार है (और शायद उस अन्य SO प्रश्न का एक लिंक? :-)) – NPE