🔐
← العودة للأدلة

Base64 مقابل الترميز السداسي العشري (Hexadecimal): أيهما يجب أن تستخدم؟

· وسوم: base64, hex, hexadecimal, encoding, binary-to-text, comparison, data-transfer

Base64 مقابل Hexadecimal: نظرة عامة

Base64 و hexadecimal (hex) كلاهما نظاما ترميز من ثنائي إلى نصي، لكنهما مُحسَّنان لأغراض مختلفة جدًا. يعطي Base64 الأولوية لنقل البيانات المضغوط، بينما يعطي hex الأولوية لقابلية القراءة البشرية. يعتمد اختيار المناسب منهما على ما إذا كان جمهورك آلة أم مطورًا يقرأ المخرجات.

يفصل هذا الدليل الاختلافات الرئيسية — الكفاءة وقابلية القراءة وحالات الاستخدام وكيفية الاختيار بينهما.

كيف يعمل ترميز Hex

يمثل الترميز السداسي العشري كل بايت (8 بت) من البيانات الثنائية كحرفين سداسيي عشر. يمثل الرقم السداسي العشري الواحد 4 بتات بقيم 0-15، باستخدام الأرقام 0-9 والأحرف A-F (أو الأحرف الصغيرة a-f).

مثال على ترميز Hex

البايت 255 (ثنائي 11111111) يصبح FF في hex. البايت 0 (ثنائي 00000000) يصبح 00 في hex. السلسلة "Hello" تصبح 48656C6C6F في hex.

كفاءة Hex

يوسع hex البيانات بنسبة 100% — 1 بايت من المدخلات يصبح 2 بايت من المخرجات. هذا هو أكبر عيب في hex: إنه يضاعف حجم بياناتك.

نقاط قوة Hex

  • قابلية القراءة البشرية: مخرجات hex مضغوطة بما يكفي ليتمكن المطور من مسحها بصريًا
  • التعرف على الأنماط: يمكن التعرف بسهولة على رؤوس الملفات الشائعة (FF D8 FF E0 لـ JPEG، 89 50 4E 47 لـ PNG)
  • تجميع حتمي: ينتج كل بايت حرفين سداسي عشر بالضبط دون حشو أو معالجة خاصة
  • سياقات غير حساسة لحالة الأحرف: الأرقام السداسية العشر الكبيرة والصغيرة قابلة للتبادل

كيف يعمل ترميز Base64

يُرمّز Base64 البيانات الثنائية باستخدام 64 حرفًا: A-Z و a-z و 0-9 و + و /. يعالج البيانات في مجموعات من 3 بايتات (24 بت)، محولاً إياها إلى 4 أحرف Base64. عندما لا يكون طول المدخلات مضاعفًا لـ 3، يُضاف الحشو (=).

كفاءة Base64

يوسع Base64 البيانات بنسبة 33% تقريبًا — 3 بايتات من المدخلات تصبح 4 بايتات من المخرجات. هذا يجعل Base64 أكثر كفاءة في استخدام المساحة بشكل ملحوظ من hex.

نقاط قوة Base64

  • كفاءة المساحة: حمل إضافي 33% مقابل حمل hex الإضافي 100%
  • معياري للبروتوكولات النصية: يتناسب بشكل طبيعي مع JSON و XML و HTML والبريد الإلكتروني
  • دعم عنوان URL البيانات: تضمين مباشر في HTML و CSS
  • دعم واسع في الأنظمة البيئية: كل لغة برمجة لديها مكتبة Base64

مقارنة مباشرة للكفاءة

إليك كيف يقارن الترميزان لأحجام مدخلات مختلفة:

| الترميز | مدخل 1 كيلوبايت | مدخل 1 ميجابايت | مدخل 1 جيجابايت | |----------|-----------|-----------|-----------| | Hex | 2 كيلوبايت | 2 ميجابايت | 2 جيجابايت | | Base64 | 1.37 كيلوبايت | 1.37 ميجابايت | 1.37 جيجابايت | | ثنائي خام | 1 كيلوبايت | 1 ميجابايت | 1 جيجابايت |

عمليًا، هذا يعني أن Base64 يوفر حوالي ثلثي الحمل الإضافي للنطاق الترددي مقارنة بـ hex. بالنسبة لنقل البيانات الكبيرة — مثل حمولات API أو أعمدة قواعد البيانات — هذا الفرق كبير.

مقارنة قابلية القراءة

Hex قابل للقراءة، Base64 ليس كذلك

يفوز Hex بشكل حاسم في قابلية القراءة البشرية. يمكن للمطورين مسح مخرجات hex ضوئيًا واكتشاف الأنماط والتعرف على تواقيع الملفات وتحديد القيم بنظرة سريعة:

Hex:   FF D8 FF E0 00 10 4A 46 49 46 00 01
       (رأس ملف JPEG — يمكن التعرف عليه فورًا)

Base64: /9j/4AAQSkZJRgABAQEASABIAAD/...
       (يبدو كأحرف عشوائية)

Hex هو التمثيل القياسي لـ:

  • عناوين الذاكرة وتفريغ الذاكرة
  • رموز الألوان (#FF5733، #00A4FF)
  • ملخصات التجزئة المشفرة (مخرجات SHA-256)
  • تصحيح بروتوكولات الشبكة
  • فحص تواقيع الملفات الثنائية

عندما لا تهم قابلية القراءة

إذا لم يقرأ أي إنسان السلسلة المُرمّزة أبدًا — على سبيل المثال، عند تمرير البيانات عبر API، أو تخزينها في عمود قاعدة بيانات، أو تضمينها في رمز JWT — فإن اكتناز Base64 يجعله الفائز الواضح.

متى تستخدم Hex

استخدم hex عندما:

  • تصحيح أو فحص البيانات الثنائية على مستوى منخفض
  • العمل مع قيم الألوان في CSS أو أدوات التصميم أو مكتبات الرسوميات
  • عرض ملخصات التجزئة المشفرة (SHA، MD5)
  • العمل في الأنظمة المضمنة أو كتابة البرامج الثابتة
  • تمثيل عناوين الذاكرة أو كود الآلة
  • حجم البيانات صغير والمساحة ليست مصدر قلق
  • قابلية قراءة المخرجات المُرمّزة مهمة

متى تستخدم Base64

استخدم Base64 عندما:

  • نقل البيانات الثنائية عبر بروتوكولات تعتمد على النصوص (HTTP، SMTP)
  • تضمين البيانات الثنائية في حمولات JSON أو XML API
  • إنشاء عناوين URL بيانات للصور المضمنة أو الخطوط أو الأصول الأخرى في HTML/CSS
  • ترميز مرفقات البريد الإلكتروني (معيار MIME)
  • العمل مع رموز JWT أو أنظمة المصادقة
  • كفاءة المساحة مهمة، خاصة للحمولات الأكبر
  • تخزين البيانات الثنائية في أعمدة قواعد البيانات النصية

هل يمكنك التحويل بين Hex و Base64؟

نعم، لأن كلاهما ترميزان غير مفقودين (lossless) لنفس البيانات الثنائية الأساسية. يمكنك فك ترميز hex إلى بايتات وإعادة ترميزها كـ Base64، أو فك ترميز Base64 إلى بايتات وإعادة ترميزها كـ hex. البيانات الثنائية الخام متطابقة في كلتا الحالتين.

// JavaScript: Convert hex to Base64
function hexToBase64(hexString) {
  const bytes = new Uint8Array(
    hexString.match(/.{1,2}/g).map(byte => parseInt(byte, 16))
  );
  let binaryString = '';
  for (let i = 0; i < bytes.length; i++) {
    binaryString += String.fromCharCode(bytes[i]);
  }
  return btoa(binaryString);
}

hexToBase64('48656C6C6F');
// Output: SGVsbG8= (Base64 encoding of "Hello")

الأداء وسرعة المعالجة

بالنسبة للبيانات الكبيرة جدًا، يكون ترميز hex أسرع قليلاً حسابيًا لأن كل بايت يُعيّن بشكل مستقل إلى حرفين دون منطق التجميع الذي يتطلبه Base64. ومع ذلك، فإن الفرق ضئيل على الأجهزة الحديثة لمعظم أحمال العمل العملية. مصدر القلق الأكبر في الأداء هو حجم البيانات — إرسال ضعف كمية البيانات عبر الشبكة (hex مقابل Base64) له تأثير أكبر بكثير من أي فرق في وقت وحدة المعالجة المركزية.

دليل ملخص للقرار

| العامل | Hex | Base64 | |--------|-----|--------| | حمل المساحة | 100% | ~33% | | قابل للقراءة البشرية | نعم | لا | | الأفضل للتصحيح | نعم | لا | | الأفضل لنقل البيانات | لا | نعم | | شائع في APIs | نادر | شائع جدًا | | دعم المتصفح | يحتاج تحويل يدوي | مضمن (btoa/atob) | | الاستخدام في عناوين URL | آمن | يتطلب متغير آمن لعناوين URL |

جرّب ترميز Base64 عبر الإنترنت

هل تحتاج إلى ترميز أو فك ترميز البيانات؟ استخدم أداة ترميز وفك ترميز Base64 المجانية عبر الإنترنت للتحويل بين النصوص والبيانات الثنائية و Base64 والصيغ الأخرى فورًا.