यहां तक कि अगर आपको लगता है कि आपको किसी को क्या करना पड़ सकता है, यह जानने की आवश्यकता नहीं है। किसी को यह समझाने की आवश्यकता नहीं है कि किसी को इसकी आवश्यकता नहीं है क्योंकि आप संदर्भ को नहीं जानते होंगे। सवाल यह नहीं है कि "क्या मुझे एंडियननेस जानने की जरूरत है" लेकिन यह "बड़ा या छोटा एंडियन" है। तो कृपया विषय पर ध्यान केंद्रित करें!
यह कहते हुए कि शायद यह सबसे अच्छा अभ्यास है अगर हम पहिया का फिर से आविष्कार नहीं करते हैं और सिर्फ मैक्रोज़ पर भरोसा करते हैं तो Apple इसके लिए प्रदान करता है। इसका कारण यह है कि उन्होंने इन मैक्रों को अनुकूलित करने के लिए कुछ समय बिताया है और सुनिश्चित किया है कि सिम्युलेटर के साथ-साथ मैक, आईफोन और उनके सभी ओएस और हार्डवेयर पर भी काम किया जाए।
यदि आप खोदते हैं कि क्या हो रहा है जब आप आह्वान करते हैं, CFSwapInt16BigToHost
तो आप उन टिप्पणियों को देख सकते हैं जो सुझाव देते हैं कि ये मैक्रो उत्पादन कर रहे हैं शायद सबसे अच्छा मशीन कोड जिसे आप संकलक अनुकूलन की सहायता से प्राप्त कर सकते हैं:
OS_INLINE
uint16_t
_OSSwapInt16(
uint16_t data
)
{
/* Reduces to 'rev16' with clang */
return (uint16_t)(data << 8 | data >> 8);
}
OS_INLINE
uint32_t
_OSSwapInt32(
uint32_t data
)
{
#if defined(__llvm__)
data = __builtin_bswap32(data);
#else
/* This actually generates the best code */
data = (((data ^ (data >> 16 | (data << 16))) & 0xFF00FFFF) >> 8) ^ (data >> 8 | data << 24);
#endif
return data;
}