ملف ثنائي


*الملف الثنائي هو ملف حاسوبي ليس ملفًا نصيًا . [ 1 ] يُستخدم مصطلح "الملف الثنائي" غالبًا بمعنى "ملف غير نصي". [ 2 ] تحتوي العديد من تنسيقات الملفات الثنائية على أجزاء يمكن تفسيرها كنص؛ على سبيل المثال، تحتوي بعض ملفات مستندات الحاسوب التي تحتوي على نص منسق ، مثل ملفات مستندات Microsoft Word القديمة ، على نص المستند بالإضافة إلى معلومات التنسيق بصيغة ثنائية. [ 2 ]
الخلفية والمصطلحات
تخزن جميع الحواسيب الحديثة المعلومات على شكل بتات (أرقام ثنائية)، باستخدام الشفرة الثنائية . ولهذا السبب، فإن جميع البيانات المخزنة على الحاسوب هي، بمعنى ما، "ثنائية". ومع ذلك، فإن أحد أنواع البيانات المفيدة والشائعة بشكل خاص والمخزنة على الحاسوب هو تلك التي تمثل فيها البتات نصًا، عن طريق ترميز الأحرف . تُسمى هذه الملفات " ملفات نصية "، بينما تُسمى الملفات التي لا تشبه ذلك "ملفات ثنائية"، كنوع من التسمية العامة أو العامة .
تحتوي بعض "الملفات النصية" على أجزاء تمثل بيانات ثنائية، بينما تحتوي العديد من "الملفات الثنائية" على أجزاء تمثل نصوصًا مشفرة؛ فعلى سبيل المثال، قد تُخزن البيانات النصية كحقل ضمن التنسيق الثنائي، أو قد تُختار ثوابت عشوائية لتتوافق مع أحرف ASCII كرمز تذكيري (وهذا شائع في أرقام الملفات السحرية ). تُعتبر هذه الملفات المختلطة بين البيانات الثنائية والنصية عادةً "ثنائية"، لأن التطبيق الذي لا يستطيع معالجة سوى النصوص لن يعرف كيفية التعامل معها.
من الشائع أن يستخدم ملف نصي محتواه لترميز بيانات يمكن ترميزها ثنائيًا بطريقة أخرى؛ ويُعتبر هذا الملف نصيًا وليس ثنائيًا، طالما بقي ضمن القيود المذكورة سابقًا حول ما تمثله بتات الملف. على سبيل المثال، في ملف ثنائي، يمكن ترميز العدد 250 بتات على شكل التسلسل 11111010. ويمكن أيضًا ترميزه في ملف نصي (مثل ملف مصدر لغة برمجة) على شكل الأرقام 2 و5 و0؛ والتي بدورها تُرمّز بتات الملف النصي على النحو التالي (باستخدام UTF-8 مثلًا ): 00110010 و00110101 و00110000.
بناء
تُعتبر الملفات الثنائية عادةً سلسلة من البايتات ، أي أن الأرقام الثنائية ( البتات ) مُجمّعة في مجموعات من ثمانية. تحتوي الملفات الثنائية عادةً على بايتات مُصممة ليتم تفسيرها على أنها شيء آخر غير الأحرف النصية . تُعد برامج الحاسوب المُجمّعة أمثلة نموذجية؛ بل إن التطبيقات المُجمّعة يُشار إليها أحيانًا، خاصةً من قِبل المبرمجين، باسم الملفات الثنائية . ولكن قد تعني الملفات الثنائية أيضًا أنها تحتوي على صور، أو أصوات، أو نسخ مضغوطة من ملفات أخرى، إلخ. - باختصار، أي نوع من محتوى الملفات على الإطلاق. [ 1 ]
تحتوي بعض الملفات الثنائية على رؤوس ، وهي عبارة عن كتل من البيانات الوصفية التي يستخدمها برنامج الحاسوب لتفسير البيانات الموجودة في الملف. غالبًا ما يحتوي الرأس على توقيع أو رقم سحري يُحدد نوع الملف. على سبيل المثال، يمكن أن يحتوي ملف GIF على صور متعددة، وتُستخدم الرؤوس لتحديد كل كتلة من بيانات الصورة ووصفها. تحتوي البايتات الأولى من الرأس على نص مثل `<g>` GIF87aأو GIF89a`<g>`، مما يُحدد الملف الثنائي كملف GIF . إذا لم يحتوي الملف الثنائي على أي رؤوس، يُطلق عليه ملف ثنائي مسطح .
قد يتكون ملف نصي جزئيًا أو كليًا من معلومات ثنائية مشفرة. عند إرسال الملفات الثنائية عبر الشبكة، قد تُشفر بحيث تستخدم أحرفًا قابلة للطباعة فقط. غالبًا ما يكون هذا ضروريًا نظرًا لقيود بروتوكولات الشبكة المستخدمة لتصفح الإنترنت والتواصل عبر البريد الإلكتروني. أحد هذه التشفيرات هو Base64 . كذلك، يمكن تخزين الملفات التي تحتوي على معلومات المفتاح العام والمفتاح الخاص، والمستخدمة في الأنظمة التي تعتمد على التشفير غير المتماثل (مثل شهادات مواقع الويب )، مع تشفير المعلومات الثنائية بأحرف قابلة للطباعة.
تلاعب
لإرسال الملفات الثنائية عبر أنظمة معينة (مثل البريد الإلكتروني ) التي لا تسمح بجميع قيم البيانات، تُحوّل هذه الملفات غالبًا إلى تمثيل نصي عادي (باستخدام Base64 ، على سبيل المثال ). يُعاب على ترميز البيانات زيادة حجم الملف أثناء النقل (على سبيل المثال، استخدام Base64 يزيد حجم الملف بنسبة 30% تقريبًا)، بالإضافة إلى الحاجة إلى إعادة تحويلها إلى ثنائية بعد الاستلام. يمكن التغلب على زيادة الحجم بضغط الروابط على مستوى أدنى، حيث ستكون البيانات النصية الناتجة أقل عشوائية تقريبًا من حجمها المتزايد، وبالتالي من المرجح أن يكون حجم البيانات المنقولة في هذه الحالة قريبًا جدًا من حجم البيانات الثنائية الأصلية. للمزيد حول هذا الموضوع، راجع قسم "ترميز البيانات الثنائية إلى نص" .
يُتيح نظام التشغيل مايكروسوفت ويندوز ومكتباته القياسية للغتي البرمجة C و C++ للمبرمج تحديد مُعامل يُشير إلى ما إذا كان الملف نصيًا عاديًا أم ثنائيًا عند فتحه؛ ويؤثر هذا على استدعاءات المكتبة القياسية للقراءة والكتابة من الملف، حيث يقوم النظام بالتحويل بين حرف "نهاية السطر" في C/C++ (حرف تغذية السطر في ASCII) وتسلسل نهاية السطر الذي يتوقعه ويندوز في الملفات ( حرفا إرجاع المؤشر إلى بداية السطر وتغذية السطر في ASCII بالتسلسل). في الأنظمة الشبيهة بنظام يونكس ، تُتيح المكتبات القياسية للغتي C وC++ أيضًا للمبرمج تحديد ما إذا كان الملف نصيًا عاديًا أم ثنائيًا، ولكن يمكن للمكتبات تجاهل هذا المُعامل، لأن تسلسل نهاية السطر في الأنظمة الشبيهة بنظام يونكس هو حرف نهاية السطر في C/C++ فقط.
مشاهدة
يمكن استخدام محرر أو عارض سداسي عشري لعرض بيانات الملف كسلسلة من القيم السداسية العشرية (أو العشرية أو الثنائية أو أحرف ASCII) للبايتات المقابلة في ملف ثنائي. [ 2 ]
عند فتح ملف ثنائي في محرر نصوص ، تُترجم كل مجموعة من ثمانية بتات عادةً إلى حرف واحد، ويرى المستخدم عرضًا (قد يكون غير مفهوم) للأحرف النصية. أما عند فتح الملف في تطبيق آخر، فيستخدم هذا التطبيق كل بايت بطريقته الخاصة: فقد يتعامل مع كل بايت كرقم ويُخرج سلسلة من الأرقام بين 0 و255، أو قد يُفسر الأرقام في البايتات كألوان ويعرض الصورة المقابلة. وتقوم أنواع أخرى من برامج عرض الملفات (تُسمى "مستخرجات الكلمات") باستبدال الأحرف غير القابلة للطباعة بمسافات، كاشفةً النص المقروء فقط. يُفيد هذا النوع من العرض في الفحص السريع للملفات الثنائية للعثور على كلمات المرور في الألعاب، أو النصوص المخفية في الملفات غير النصية، أو استعادة المستندات التالفة. [ 2 ] بل يُمكن استخدامه أيضًا لفحص الملفات المشبوهة (البرامج) بحثًا عن آثار غير مرغوب فيها. على سبيل المثال، سيرى المستخدم أي عنوان URL أو بريد إلكتروني قد يحاول البرنامج المشتبه به الاتصال به لتحميل بيانات غير مصرح بها (لسرقتها). إذا تم التعامل مع الملف نفسه كملف تنفيذي وتشغيله، فسيحاول نظام التشغيل تفسير الملف كسلسلة من التعليمات بلغة الآلة الخاصة به .
تفسير
تُعدّ المعايير بالغة الأهمية للملفات الثنائية. فعلى سبيل المثال، يُعرض نصٌّ عند تفسير ملف ثنائي باستخدام مجموعة أحرف ASCII. بينما قد يُفسّر تطبيقٌ مُخصّص الملف بطريقةٍ مختلفة: فقد يُمثّل البايت صوتًا، أو بكسلًا، أو حتى كلمةً كاملة. يبقى الملف الثنائي في حدّ ذاته بلا معنى، إلى أن تُحدّد خوارزميةٌ مُنفّذة ما يجب فعله بكل بت، أو بايت، أو كلمة، أو كتلة. لذا، فإنّ مجرّد فحص الملف الثنائي ومحاولة مطابقته مع التنسيقات المعروفة قد يُؤدّي إلى استنتاجٍ خاطئٍ حول ما يُمثّله فعليًا. يُمكن استغلال هذه الحقيقة في علم إخفاء المعلومات ، حيث تُفسّر خوارزميةٌ ملفّ بيانات ثنائيًّا بطريقةٍ مختلفةٍ للكشف عن محتوىً مخفيّ. وبدون هذه الخوارزمية، يستحيل معرفة وجود محتوىً مخفيّ.
التوافق الثنائي
سيحتوي ملفان متوافقان ثنائياً على نفس تسلسل الأصفار والآحاد في جزء البيانات من الملف. ومع ذلك، قد يختلف رأس الملف.
يُستخدم هذا المصطلح عادةً للإشارة إلى أن ملفات البيانات التي يُنتجها تطبيقٌ ما هي نفسها تمامًا ملفات البيانات التي يُنتجها تطبيقٌ آخر. على سبيل المثال، تُنتج بعض شركات البرمجيات تطبيقاتٍ لأنظمة ويندوز وماكنتوش متوافقة ثنائيًا ، ما يعني أن الملف المُنتج في بيئة ويندوز يُمكن استبداله بالملف المُنتج على نظام ماكنتوش. وهذا يُجنّبنا العديد من مشاكل التحويل الناتجة عن استيراد وتصدير البيانات.
إحدى المشكلات المحتملة المتعلقة بتوافق البيانات الثنائية بين أجهزة الكمبيوتر المختلفة هي ترتيب البايتات في كل جهاز. فبعض أجهزة الكمبيوتر تخزن البايتات في ملف بترتيب مختلف. [ 3 ]
انظر أيضاً
مراجع
- 1 2 "تعريف الملف الثنائي من مشروع معلومات لينكس (LINFO)" . www.linfo.org . تم الاطلاع عليه بتاريخ 12-10-2017 .
- 1 2 3 4 "ملفات ASCII مقابل الملفات الثنائية" . www.cs.umd.edu . تاريخ الاسترجاع: 12 أكتوبر 2017 .
- ↑ "NCL: قراءة البيانات الثنائية" . www.ncl.ucar.edu . مؤرشف من الأصل بتاريخ 12-10-2017 . تم الاطلاع عليه بتاريخ 12-10-2017 .
روابط خارجية
تعريف كلمة "ثنائي" في قاموس ويكشنري
- تنسيقات ملفات الحاسوب
