تحويل البيانات الثنائية إلى نص
ترميز البيانات الثنائية إلى نص هو نظام ترميز بيانات يُمثل البيانات الثنائية كنص عادي . تتكون البيانات الثنائية عادةً من سلسلة من قيم البايت (أو الأوكتيت ) ذات 8 بتات، ويقتصر النص على رموز الأحرف القابلة للطباعة في أنظمة الترميز الشائعة الاستخدام مثل ASCII . تحتوي البيانات الثنائية عادةً على قيم غير قابلة للطباعة، لذا تفشل البرامج المصممة لمعالجة النصوص فقط في معالجة هذه البيانات. يسمح ترميز البيانات الثنائية كنص بمعالجة المعلومات غير المخزنة كنص بواسطة برامج لا تستطيع معالجة البيانات الثنائية. لا يستطيع البرنامج تفسير المعلومات، ولكنه يستطيع إجراء عمليات مفيدة على البيانات مثل الإرسال والتخزين .
تستخدم وثائق PGP ( RFC 9580 ) مصطلح "درع ASCII" للترميز الثنائي إلى نص عند الإشارة إلى Base64 .
من الناحية المفاهيمية، يختلف ترميز البيانات الثنائية إلى نص عن التمثيل العددي لأساس عددي ( أساس ). على سبيل المثال، النظام العشري هو نظام لتمثيل قيمة ما بالأساس 10، ولكنه ليس ترميزًا ثنائيًا إلى نص. يمكن ابتكار ترميز ثنائي إلى نص يستخدم التمثيل العشري للبيانات المُرمّزة، ولكن مثل هذا النظام سيستخدم 10 قيم فقط من تسلسل مُرمّز مكون من 4 بتات، تاركًا 6 قيم غير مستخدمة. أما الترميز الأكثر كفاءة فيستخدم جميع القيم الـ 16. وهذا هو Base16 الذي يستخدم النظام الست عشري لترميز كل تسلسل مكون من 4 بتات. والجدير بالذكر أنه نظرًا لأن 16 قوة من قوى العدد 2 ، فإن Base16 والنظام الست عشري لا يمكن تمييزهما عمليًا على الرغم من اختلافهما من الناحية المفاهيمية.
تتيح تقنيات التشفير المُهَرِّبة، مثل التشفير المئوي والتشفير القابل للطباعة، تمثيل البيانات الثنائية كنصوص، ولكن بطريقة مختلفة تمامًا. فبينما يتضمن التشفير الثنائي إلى النصي تشفير سلسلة الإدخال بأكملها، يسمح التشفير المُهَرِّب بتضمين البيانات الثنائية في بيانات نصية بطبيعتها.
يستخدم
إرسال البيانات الثنائية كنص
يُمكّن ترميز البيانات الثنائية إلى نص من نقل البيانات عبر قناة اتصال لا تسمح بنقل البيانات الثنائية العشوائية (مثل البريد الإلكتروني أو بروتوكول NNTP ) أو لا تدعم ترميز 8 بت . كما يُمكّن هذا الترميز من نقل البيانات الثنائية عبر بروتوكول اتصال مُصمم لنقل نصوص قابلة للقراءة البشرية (أي باللغة الإنجليزية). غالبًا ما يدعم هذا البروتوكول قيمًا حرفية من 7 بت فقط (ويتجنب ضمن ذلك بعض رموز التحكم)، وقد يتطلب فواصل أسطر عند فترات قصوى محددة، وقد لا يدعم المسافات البيضاء . لذا، فإن الأحرف الـ 94 القابلة للطباعة من ASCII هي فقط الآمنة للاستخدام في نقل البيانات.
يستخدم معيار ترميز النصوص ASCII سبعة بتات لترميز الأحرف. وبذلك ، يُمكن ترميز 128 قيمة فريدة (أي 2^ 7 ) (من 0 إلى 127) لتمثيل الأحرف الأبجدية والرقمية وعلامات الترقيم الشائعة الاستخدام في اللغة الإنجليزية ، بالإضافة إلى مجموعة مختارة من أحرف التحكم غير القابلة للطباعة. على سبيل المثال، يُرمز للحرف الكبير A بالرمز 65 (41 16 ، 100 0001 2 )، وللرقم 2 بالرمز 50 (32 16 ، 011 0010 2 )، وللقوس المعقوف الأيمن } بالرمز 125 (7D 16 ، 111 1101 2 )، ولحرف التحكم CR (إرجاع المؤشر إلى بداية السطر) بالرمز 13 (0D 16 ، 000 1101 2 ).
على النقيض من ذلك، تخزن معظم الحواسيب البيانات في الذاكرة مُنظمةً في وحدات بايت ( ثمانية بتات ). تحتوي الملفات التي تتضمن تعليمات برمجية قابلة للتنفيذ آليًا وبيانات غير نصية عادةً على جميع قيم البايتات الثمانية الممكنة البالغ عددها 256 قيمة. اعتمدت العديد من برامج الحاسوب على هذا التمييز بين النصوص ذات السبعة بتات والبيانات الثنائية ذات الثمانية بتات ، ولن تعمل بشكل صحيح إذا ظهرت أحرف غير ASCII في بيانات كان من المتوقع أن تتضمن نصوص ASCII فقط. على سبيل المثال، إذا لم تُحفظ قيمة البت الثامن، فقد يفسر البرنامج قيمة بايت أعلى من 127 على أنها إشارة تُخبره بتنفيذ وظيفة معينة.
كثيرًا ما يُراد إرسال بيانات غير نصية عبر نظام نصي، كإرفاق صورة برسالة بريد إلكتروني. ولتحقيق ذلك، تُشفّر البيانات بطريقة ما، بحيث تُشفّر البيانات ذات 8 بتات إلى أحرف ASCII ذات 7 بتات (باستخدام الأحرف الأبجدية الرقمية وعلامات الترقيم فقط - أحرف ASCII القابلة للطباعة). وعند وصولها إلى وجهتها، تُفكّ شفرتها مرة أخرى إلى شكلها ذي 8 بتات. تُعرف هذه العملية بتشفير البيانات الثنائية إلى نصية. وتُجري العديد من البرامج هذا التحويل لتمكين نقل البيانات، مثل PGP و GNU Privacy Guard .
ترميز النص العادي
تُستخدم طرق تحويل البيانات الثنائية إلى نصية أيضًا كآلية لترميز النصوص العادية . بعض الأنظمة لديها مجموعة أحرف محدودة يمكنها التعامل معها؛ فهي ليست خالية من أي قيود على دقة 8 بت ، بل إن بعضها لا يستطيع حتى التعامل مع جميع أحرف ASCII القابلة للطباعة. تفرض أنظمة أخرى قيودًا على عدد الأحرف المسموح بها بين فواصل الأسطر، مثل حد "1000 حرف لكل سطر" في بعض برامج بروتوكول نقل البريد البسيط (SMTP) ، كما هو مسموح به في RFC 2821. بينما تضيف أنظمة أخرى رؤوسًا أو تذييلات إلى النص. تستخدم بعض البروتوكولات، التي لا تحظى بسمعة جيدة ولكنها لا تزال مستخدمة ، إشارات داخلية ، مما يُسبب ارتباكًا إذا ظهرت أنماط معينة في الرسالة. أشهر هذه الأنماط هو سلسلة "From " (بما في ذلك المسافة اللاحقة) في بداية السطر، والتي تُستخدم لفصل رسائل البريد الإلكتروني في تنسيق ملف mbox .
باستخدام ترميز ثنائي إلى نصي على الرسائل النصية، ثم فك ترميزها في الطرف الآخر، يمكن جعل هذه الأنظمة تبدو شفافة تمامًا . يُشار إلى هذا أحيانًا باسم "حماية ASCII". على سبيل المثال، يستخدم مكون ViewState في ASP.NET ترميز base64 لنقل النصوص بأمان عبر HTTP POST، لتجنب تعارض الفواصل .
أمثلة
يصف الجدول أدناه أبرز ترميزات تحويل البيانات الثنائية إلى نص. الكفاءة المذكورة هي النسبة بين عدد البتات في المدخلات وعدد البتات في المخرجات المُرمّزة. بالنسبة لأي ترميز يُحوّل n احتمالًا من المدخلات إلى حرف واحد مكون من 8 بتات، فإن الكفاءة تساوي log₂( n )/8.
| التشفير | كفاءة | تطبيقات لغات البرمجة | تعليقات |
|---|---|---|---|
| Ascii85 | 80% | awk مؤرشف بتاريخ 29-12-2014 في Wayback Machine ، C ، C (2) ، C# ، F# ، Go ، Java Perl ، Python ، Python (2) | توجد عدة متغيرات لهذا الترميز، مثل Base85 و btoa وما إلى ذلك. |
| الأساس 16 | 50% | معظم اللغات | بما أنه يعتمد على النظام الست عشري، فهناك اختلافات للحالات الكبيرة والصغيرة أو كليهما . |
| الأساس 26 | 58.3% | تُستخدم هذه الأداة لتحويل تجزئة SHA-256 إلى سلاسل نصية بأحرف كبيرة فقط في InChIKey (نظام فهرسة قياسي للهياكل الكيميائية) [ 1 ] وSID (تحديد التسلسل، وهو نظام فهرسة لمنتجات تضخيم تفاعل البوليميراز المتسلسل في الطب الشرعي). [ 2 ] يستخدم InChIKey تحديدًا نوعين من التعيينات: 14b:3ch، 9b:2ch. | |
| Base32 | 62.5% | ANSI C ، دلفي ، جو ، جافا ، سي شارب ، إف شارب ، بايثون | |
| Base36 | 64.6% | باش، سي ، سي++ ، سي# ، جافا ، بيرل ، بي إتش بي ، بايثون ، فيجوال بيسك، سويفت ، وغيرها الكثير | يستخدم الأرقام فقط (من 0 إلى 9) والأحرف الصغيرة (من a إلى z). يشيع استخدامه في أنظمة إعادة توجيه عناوين URL مثل TinyURL أو SnipURL/Snipr كمعرفات أبجدية رقمية مختصرة. |
| القاعدة 45 | 68.6% (97% [ أ ] ) | جو ، بايثون | تم تعريفها في مواصفات IETF RFC 9285 لإدراج البيانات الثنائية بشكل مضغوط في رمز الاستجابة السريعة (QR code) . [ 3 ] |
| Base56 | 72.6% | PHP ، بايثون ، جو | يشبه نظام Base58 ولكنه يستبعد الأحرف 1وحرف O الصغير ( o) لتقليل مخاطر الاحتيال والخطأ البشري. [ 4 ] |
| قاعدة 58 | 73.2% | سي ، سي++ ، بايثون ، سي# ، جافا | يشبه Base64 ولكنه يستثني الأحرف غير الأبجدية الرقمية ( +و /) وأزواج الأحرف التي غالبًا ما تبدو غامضة عند عرضها: الصفر ( 0) والحرف O الكبير ( O)، والحرف I الكبير ( I) والحرف L الصغير ( l). يُستخدم Base58 لتمثيل عناوين بيتكوين . بالنسبة لـ SegWit ، تم استبداله بـ Bech32. |
| Base62 | 74.4% | رست ، بايثون | يشبه Base64 ولكنه يحتوي فقط على أحرف أبجدية رقمية. |
| Base64 | 75.0% | awk (مؤرشف بتاريخ 29 ديسمبر 2014 في Wayback Machine) ، C ، C (2) ، Delphi ، Go ، Python ، وغيرها الكثير | ترميز مبكر ولا يزال شائعًا، تم تحديده لأول مرة كجزء من RFC 989 في عام 1987 |
| قاعدة 85 | 80.0% | سي ، بايثون ، بايثون (2) | نسخة منقحة من Ascii85 . |
| BaseXML [ 5 ] | 80% ± 6 أحرف | سي بايثون جافا سكريبت | ترميز لحشو البيانات في XML. |
| Base91 [ 6 ] | 81.3% | دو دييز فا دييز | متغير العرض الثابت |
| basE91 [ 7 ] | 81.3% | لغات البرمجة: C، Java، PHP، 8086 Assembly، AWK C#، F# ، Rust | متغير العرض المتغير |
| Base94 [ 8 ] | 81.9% | بايثون ، سي ، رست | |
| Base122 [ 9 ] | 87.5% | جافا سكريبت ، بايثون ، جافا ، Base125 بايثون وجافا سكريبت ، جو ، سي | يتم ترميزها إلى UTF-8، وبالتالي فإن ادعاء الكفاءة يختلف عن الادعاء النظري. |
| Bech32 | 62.5% - ما لا يقل عن 8 أحرف إضافية (التسمية، الفاصل، تصحيح الأخطاء ECC ذو 6 أحرف ) | لغات البرمجة: C، C++، JavaScript ، Go ، Python، Haskell ، Ruby ، Rust | المواصفات. [ 10 ] يُستخدم في بيتكوين وشبكة لايتنينغ . [ 11 ] يتم ترميز جزء البيانات مثل Base32 مع إمكانية التحقق من وتصحيح ما يصل إلى 6 أحرف خاطئة باستخدام رمز BCH المكون من 6 أحرف في النهاية، والذي يتحقق أيضًا من/يصحح الجزء المقروء بشريًا. يتميز متغير Bech32m بتغيير طفيف يجعله أكثر مقاومة للتغيرات في الطول. [ 12 ] |
| BinHex | 75% | بيرل ، سي ، سي (2) | نظام التشغيل MacOS الكلاسيكي |
| إنتل هيكس | أقل من 50% | مكتبة C ، C++ | تُستخدم عادةً لبرمجة رقائق ذاكرة EPROM و NOR flash |
| MIME | انظر إلى Quoted-printable و Base64 | انظر إلى Quoted-printable و Base64 | حاوية ترميز لتنسيق يشبه البريد الإلكتروني |
| S-record (Motorola hex) | 49.6% | مكتبة C ، C++ | تُستخدم عادةً لبرمجة رقائق ذاكرة EPROM و NOR flash . يفترض 49.6% وجود 255 بايت ثنائي لكل سجل. |
| تيكترونيكس هيكس | أقل من 50% | تُستخدم عادةً لبرمجة رقائق ذاكرة EPROM و NOR flash . | |
| نظام إدارة المعاملات | عامل | TypeScript، CLI ، Dart | يقوم TxMS بضغط البيانات الثنائية إلى تنسيق نصي قابل للقراءة باستخدام ترميز Binary-to-Text ويسمح بالتحويل العكسي إلى النظام الست عشري. |
| ترميز uuencoding | حوالي 60% ( تصل إلى 70% ) | بيرل ، سي ، دلفي ، جافا ، بايثون ، وربما العديد من اللغات الأخرى | ترميز مبكر طُوِّر عام 1980 لنسخ البيانات بين أنظمة يونكس . وقد استُبدل إلى حد كبير بـ MIME و yEnc |
| ترميز xx | ~75% (مشابهة لترميز Uuencoding) | ج ، دلفي | تم اقتراح (واستخدامه أحيانًا) كبديل لترميز Uuencoding لتجنب مشاكل ترجمة مجموعة الأحرف بين أنظمة ASCII و EBCDIC التي قد تؤدي إلى تلف البيانات المشفرة بـ Uuencoding |
| z85 ( مواصفات ZeroMQ: 32/Z85 ) | 80% (مشابهة لـ Ascii85/Base85) | لغات البرمجة C (الأصلية)، C# ، Dart ، Erlang ، Go ، Lua ، Ruby ، Rust وغيرها | يُحدد هذا التنسيق مجموعة فرعية من ASCII مشابهة لـ Ascii85 ، مع حذف بعض الأحرف التي قد تُسبب أخطاءً برمجية . ويتوافق هذا التنسيق مع مواصفات ZeroMQ رقم 32/Z85 .` \ " ' _ , ; |
| RFC 1751 ( S/KEY [ 13 ] ) | 33% | لغة C، لغة بايثون | "اتفاقية للمفاتيح المقروءة بشريًا ذات 128 بت". تُعدّ سلسلة من الكلمات الإنجليزية القصيرة أسهل على البشر في القراءة والتذكر والكتابة من النظام العشري أو أنظمة تحويل البيانات الثنائية إلى نصية الأخرى. [ 14 ] يُربط كل رقم 64 بت بست كلمات قصيرة، تتراوح أحرفها بين حرف واحد وأربعة أحرف، من قاموس عام يضم 2048 كلمة. [ 13 ] |
تتضمن بعض التنسيقات القديمة وغير الشائعة اليوم BOO (base64)، [ 15 ] BTOA (ثنائي إلى ASCII محدد بشكل غامض، تاريخيًا base85، واليوم في JavaScript base64)، وتشفير USR.
يحوّل ترميز Base64 (بمختلف أنواعه، بما في ذلك uuencoding) تسلسلات من 6 بتات إلى أحرف قابلة للطباعة. وبما أن عدد الأحرف القابلة للطباعة يتجاوز 64 حرفًا (2 ^ 6) ، فإن هذا ممكن. تُترجم سلسلة البايتات المعطاة باعتبارها سلسلة من البتات، ثم تُقسّم هذه السلسلة إلى أجزاء من 6 بتات، ويُنتج تسلسل الأحرف المقابلة. تختلف الترميزات المختلفة في طريقة الربط بين تسلسلات البتات والأحرف، وفي كيفية تنسيق النص الناتج.
تستخدم بعض أنظمة التشفير (النسخة الأصلية من BinHex ونظام التشفير الموصى به لـ CipherSaber ) أربعة بتات بدلاً من ستة، حيث تُسقط جميع التسلسلات الممكنة المكونة من 4 بتات على الأرقام الستة عشر القياسية في النظام الست عشري . يؤدي استخدام 4 بتات لكل حرف مُشفّر إلى زيادة طول الناتج بنسبة 50% مقارنةً بنظام base64، ولكنه يُبسّط عملية التشفير وفك التشفير؛ إذ إن توسيع كل بايت في المصدر بشكل مستقل إلى بايتين مُشفّرين أسهل من توسيع base64 لثلاثة بايتات مصدرية إلى أربعة بايتات مُشفّرة.
من بين أول 192 رمزًا في نظام PETSCII ، يمتلك 164 رمزًا تمثيلًا مرئيًا عند اقتباسها: 5 (أبيض)، 17-20 و28-31 (الألوان وعناصر التحكم في المؤشر)، 32-90 (ما يعادلها في ASCII)، 91-127 (الرسومات)، 129 (برتقالي)، 133-140 (مفاتيح الوظائف)، 144-159 (الألوان وعناصر التحكم في المؤشر)، و160-192 (الرسومات). [ 16 ] وهذا يسمح نظريًا بترميز الرموز، مثل base128، بين الأجهزة التي تدعم نظام PETSCII.
انظر أيضاً
- شفرة برمجية أبجدية رقمية – شفرة مصممة كحمولة لاستغلال ثغرة أمنية في البرنامج. صفحات تعرض أوصافًا مختصرة لأهداف إعادة التوجيه.
- ترميز الأحرف - استخدام الأرقام لتمثيل أحرف النص
- تنسيق الأرقام في الحاسوب – التمثيل الداخلي للقيم العددية في الحاسوب الرقمي
- الترميز الجغرافي – رمز يمثل كيانًا جغرافيًا (موقعًا أو كائنًا)
- نظام الأرقام – رموز للتعبير عن الأرقام
- بوني كود – ترميز أسماء نطاقات يونيكود
ملحوظات
- ↑ يختار نظام ترميز إنشاء رمز الاستجابة السريعة تلقائيًا الترميز المناسب لمجموعة الأحرف المدخلة، حيث يُرمّز حرفين أبجديين رقميين في 11 بت، بينما يُرمّز نظام Base45 ستة عشر بتًا في ثلاثة أحرف من هذا النوع. وبذلك، تبلغ الكفاءة 97%، أي ما يعادل 32 بتًا من البيانات الثنائية مُرمّزة في 33 بتًا.
مراجع
- ↑ "الأسئلة والأجوبة التقنية - InChI Trust" . inchi-trust.org . تم الاطلاع عليه بتاريخ 2021-01-08 .
- ↑ يونغ، برايان؛ فارس، توم؛ أرموجيدا، لويجي (2019). "تسمية لتحليل الحمض النووي الجنائي القائم على التسلسل" . علم الوراثة . 42. العلوم الجنائية الدولية: 14-20 . doi : 10.1016/j.fsigen.2019.06.001 . PMID 31207427.
[...] 2) يتم تحويل الناتج السداسي عشري لدالة التجزئة إلى النظام السداسي عشري (الأساس 26).
- ↑ فالتستروم، باتريك؛ ليونغرين، فريك؛ غوليك، ديرك-ويليم فان (11 أغسطس 2022). "ترميز بيانات Base45" .
حتى في وضع البايت، يحاول قارئ رمز الاستجابة السريعة النموذجي تفسير تسلسل البايتات كنص مُرمّز بنظام UTF-8 أو ISO/IEC 8859-1. ... يجب تحويل هذه البيانات إلى نص مناسب قبل أن يتم ترميز هذا النص كرمز استجابة سريعة. ... Base45 ... يوفر ترميزًا أكثر إحكامًا لرمز الاستجابة السريعة.
- ↑ دوجان، روس (18 أغسطس 2009). "ترميز الأعداد الصحيحة باستخدام Base-56 في PHP" .
- ↑ "BaseXML - لـ XML1.0+" . GitHub . 16 مارس 2019.
- ^ داك هو؛ يو صن؛ تشن جيا؛ شيويينغ يو؛ وي قوه؛ وي هو؛ تشاو تشي؛ شيانهوي لو. “اقتراح بديل لـ Base85/64 – Base91” (PDF) . المعهد الدولي للمعلوماتية والنظم .
- ↑ "ترميز النص من ثنائي إلى ASCII" . basE91 . SourceForge . تم الاسترجاع في 2023-03-20 .
- ↑ "تحويل البيانات الثنائية إلى نص بأقل قدر من الحمل الزائد" . ملاحظات فوركل . ١٨ أبريل ٢٠٢٠. مؤرشف من الأصل في ٢٨ أكتوبر ٢٠٢٥.
- ↑ ألبرتسون، كيفن (26 نوفمبر 2016). "ترميز Base-122" .
- ^ "بيتكوين / بيبس" . جيثب . 8 ديسمبر 2021.
- ↑ راستي راسل وآخرون (15 أكتوبر 2020). " ترميز الدفع في مستودع Lightning RFC" . جيت هاب .
- ↑ "تنسيق Bech32m لعناوين الشهود v1+" . GitHub . 5 ديسمبر 2021.
- 1 2 RFC 1760 "نظام كلمة المرور لمرة واحدة S/KEY".
- ↑ RFC 1751 "اتفاقية للمفاتيح المقروءة بشريًا ذات 128 بت"
- ↑ "تنسيق ملف Boo، التشفير وفك التشفير" . جامعة كولومبيا .
- ↑ "رموز PETSCII الخاصة بجهاز Commodore 64" . sta.c64.org .
- تنسيقات ترميز النص الثنائي
- تنسيقات ملفات الحاسوب
- ترميز الأحرف

