السلام عليكم
أنا عندى مشكلة بخصوص Little-Endian و Big-Endian , دائما الاثنين يتم قراءتهم بالعكس, فى البداية هعرض ترتيب كل نوع وبعدين هشرح المشكلة .
- ترتيب البايتات بتاعة الـ Big-Endian
![]()
- ترتيب البايتات بتاعة Little-Endian
![]()
المشكلة هى أن عندى النظامين بيتم قراءتهم بالعكس بمعنى لو فرضنا عندنا رقم 0x1020
عند قراءة الرقم السابق من ملف يستخدم نظام Big-Endian يتم قراءتة بهذا الشكل (0x2010)
أيضا قراءة الرقم نفسة من ملف يستخدم نظام Little-Endian بيتم قراءتة بهذا الشكل (0x2010)
يعنى النظامين لازم أعكسهم عشان يبقى (0x1020) .
عن تجربتى أنا قمت بقراءة أول 2 بايت من ملف من نوع JPEG, وقام بقراءتهم بهذا الشكل (0xd8ff) مع العلم أن الترتيب الصحيح هو (0xffd8), لكن هذا طبيعى لان هذا النوع من الملفات يتم قراءتة بالمعكوس, لانة يستخدم النوع Big-Endian .
تجربة أخرى, قمت بقراءة أول 2 بايت من ملف من نوع BMP, وقام بقراءتهم بهذا الشكل (0x4d42) مع العلم أن فى موقع Wikipedia كاتب أول بايتين بهذا الشكل (0x424d), لكن أنا لما قريتهم من الملف طلعو بالعكس, وهذا يستخدم النوع Little-Endian .
طيب أية سبب المشكلة دى, النوعين بيتم قراءتهم معكوسين .
