المرة الأولى التي عضني فيها الثنائي بشكل حقيقي، لم يكن ذلك في فصل علوم الكمبيوتر - بل كان في خطأ في الإنتاج. كان البرنامج الإضافي WordPress الذي أحتفظ به يخزن سلسلة قصيرة بطريقة تشوه أي حرف غير إنجليزي، ولمعرفة مكان حدوث الفساد، كان علي أن أنظر إلى البايتات الفعلية. لقد قمت بلصق السلسلة المكسورة في "؛ نص إلى ثنائي "؛ الصندوق الذي وجدته عبر الإنترنت، استعدت جدارًا من الآحاد والأصفار، وأدركت على الفور أن الأداة تعاملت فقط مع أحرف ASCII وأسقطت الأحرف المميزة بهدوء. البايتات التي أظهرتها لي كانت كذبة، وأهدرت فترة ما بعد الظهر في مطاردة الطبقة الخاطئة من المكدس.
هذا هو الشيء المتعلق بالتحويل الثنائي: فهو يبدو وكأنه لعبة، ومعظم الأدوات المجانية تعامله مثل لعبة واحدة. يجب على المترجم المناسب تشفير مجموعة كاملة من الأحرف التي يكتبها الأشخاص بالفعل - اللهجات والرموز التعبيرية والصينية والعربية - من خلال UTF-8، ويتم تشغيل تشفير الويب الحديث، ويجب عليه فك تشفيرها مرة أخرى بايت مقابل بايت. أنا أبني تولز.ديف، البرنامج المساعد WP Adminify، وكمية لا بأس بها من Laravel وReact، لذلك قمت بالتنقل بين النص وتمثيل البايت الخاص به أكثر مما أرغب، وقمت ببناء مترجم ثنائي لإجراء التحويل بشكل صحيح لكل حرف، وليس فقط 128 السهل.
ليرة تركية؛DR: يقوم المترجم الثنائي بتحويل النص إلى الآحاد والأصفار التي يخزنها الكمبيوتر، ويعيد تلك الآحاد والأصفار إلى نص. الالتقاط هو ترميز الأحرف: يغطي ASCII 128 حرفًا فقط، بينما يحتاج النص الحقيقي إلى UTF-8، حيث يمكن أن يكون الحرف الواحد من بايت واحد إلى أربعة بايت. ال مترجم ثنائي يشفر ويفك تشفير كامل يونيكود النطاق - بما في ذلك الرموز التعبيرية - بالثنائي والسداسي والعشري والثماني، بالكامل في متصفحك، ويخبرك بالضبط بالرمز المميز الخطأ عندما يفشل اللصق في فك التشفير.
ما هو المترجم الثنائي، حقا؟
المترجم الثنائي هو محول بين النص الذي يمكن قراءته بواسطة الإنسان والتمثيل الرقمي الذي يستخدمه الكمبيوتر لتخزين هذا النص. يتم تخزين كل حرف تكتبه كبايت واحد أو أكثر - أرقام من 0 إلى 255 - ويمكن كتابة كل بايت بشكل ثنائي (أساس 2)، أو سداسي عشري (أساس 16)، أو عشري (أساس 10)، أو ثماني (أساس 8). ترجمة واقتباس؛ مرحبا واقتباس؛ إلى ثنائي يعطي 01001000 01101001؛ المجموعتان المكونتان من ثمانية بتات هما البايتتان لـ "؛H"؛ و"؛i"؛.
الكلمة والاقتباس؛ ترجمة واقتباس؛ يقوم بعمل حقيقي هنا، لأن هناك جدول ترجمة متضمن. قيمة البايت 72 لا تعني بطبيعتها الحرف "؛H"؛ - يعني "؛H"؛ فقط لأن ترميز الأحرف يقول ذلك. بالنسبة للأحرف والأرقام وعلامات الترقيم الشائعة في اللغة الإنجليزية الأساسية، فإن التعيين هو ASCII، وهو معيار من الستينيات يعين 128 حرفًا للقيم من 0 إلى 127. ASCII هو السبب "؛H"؛ هو 72 والمسافة هي 32، وهو جزء من التحويل الثنائي الذي يحصل عليه الجميع بشكل صحيح.
تبدأ المشكلات فوق القيمة 127. يكتب العالم أكثر من 128 حرفًا مميزًا، والتشفير الذي يتعامل مع الباقي - الذي يستخدمه متصفحك وقاعدة البيانات الخاصة بك وJSON بشكل شبه مؤكد - هو UTF-8. المترجم الثنائي الجيد هو في الواقع برنامج ترميز UTF-8 مع طبقة تحويل أساسية في الأعلى. مترجم ثنائي تم تصميمه بهذه الطريقة تمامًا، ولهذا السبب يمكنه القيام برحلة ذهابًا وإيابًا عبر سلسلة تحتوي على رمز تعبيري وإعادتك إلى الحرف نفسه.
كيف يعمل تحويل النص إلى ثنائي فعليًا؟
إن تحويل النص إلى ثنائي هو عبارة عن خط أنابيب من مرحلتين، وفهم المراحل يفسر كل ما تفعله الأداة. المرحلة الأولى هي ترميز الأحرف إلى بايتوالثاني هو كتابة كل بايت في القاعدة التي اخترتها.
التشفير هو المكان الذي يعيش فيه UTF-8. UTF-8 هو ترميز متغير الطول: يأخذ الحرف بايتًا واحدًا إذا كان حرف ASCII عاديًا، وبايتتين لمعظم الحروف ذات اللكنة اللاتينية والعديد من الرموز، وثلاث بايتات للجزء الأكبر من البرامج النصية العالمية '؛ بما في ذلك الصينية واليابانية والكورية، وأربعة بايتات للأحرف والرموز التعبيرية الأقل شيوعًا. لذا "؛A"؛ هو بايت واحد، "؛ é"؛ هو اثنان، "؛ , , , , "؛ هو ثلاثة، وللأحرف خارج النطاق الأساسي ينتج التسلسل الصحيح متعدد البايتات، مكتملًا بالبتات البادئة التي تحدد عدد البايتات التالية.
المرحلة الثانية هي حسابية خالصة. بمجرد أن يكون لديك قائمة بقيم البايت، فإن كتابتها بوسائل ثنائية تعبر عن كل رقم من 0 إلى 255 على شكل ثماني بتات، تكون مبطنة بصفر بحيث يكون كل بايت بنفس العرض. يكتب النظام السداسي العشري كل بايت كحرفين بالضبط (00 إلى ff)، ولهذا السبب يعتبر الرقم السداسي هو الحرف المفضل لعرض البيانات الأولية. يستخدم Octal ثلاثة أرقام لكل بايت، ويظهر الرقم العشري الرقم العادي فقط. ال مترجم ثنائي يتيح لك التنقل بين القواعد الأربع على الفور لأن البايتات الأساسية هي نفسها - يتغير تنسيق العرض فقط.
كيف يقوم المترجم بفك تشفير الثنائي مرة أخرى إلى النص؟
يؤدي فك التشفير إلى عكس مسار المسار، وهو الاتجاه الذي تفشل فيه معظم الأدوات بهدوء. أولا يجب على الأداة أن اقرأ مدخلاتك في قيم البايتثم لا بد من ذلك قم بفك تشفير تلك البايتات كـ UTF-8 مرة أخرى إلى الأحرف.
قراءة الإدخال تعني الترميز. إذا قمت بلصق ثنائي بمسافات بين البايتات، فإن كل مجموعة هي بايت واحد. إذا قمت بلصق مجموعة طويلة متواصلة من البتات، فإن الأداة تجمعها في ثمانية - وهو ما يعمل فقط إذا كان الطول الإجمالي مضاعفًا لثمانية، لذلك يتم وضع علامة على الطول الفردي بدلاً من قراءته بشكل خاطئ بصمت. ينطبق نفس المنطق على الشكل السداسي: حرفين لكل بايت، لذا فإن العدد الفردي من الأرقام السداسية يمثل خطأ. تعمل الفواصل والمسافات وعلامات التبويب والسطر جميعها كفواصل، حتى تتمكن من لصق أي تنسيق قمت بالنسخ منه دون إعادة تنسيقه أولاً.
تعيد المرحلة الثانية بناء الأحرف من البايتات، وهذا هو المكان الذي تكون فيه بنية UTF-8'؛s مهمة. البايت في النطاق 0-127 هو حرف مستقل. تشير البايتة ذات نمط البت العالي المحدد إلى بداية تسلسل مكون من اثنين أو ثلاثة أو أربعة بايت، ويجب أن يكون للبايتات التالية نمط استمرار خاص بها. إذا لم يحدث ذلك - بسبب فقدان البايت، أو قطع التسلسل، أو لم تكن البيانات صالحة أبدًا لـ UTF-8 للبدء به - فإن مترجم ثنائي تشير التقارير إلى أن تسلسل البايت ليس نصًا صالحًا وليس إصدار أحرف بديلة أو قمامة. هذه الصدق هي النقطة المهمة: عندما يفشل فك التشفير، تريد معرفة أن البيانات خاطئة، ولا تحدق في mojibake وتتساءل عما إذا كانت الأداة معطلة.
ثنائي، سداسي، عشري، أو ثماني - ما الذي يجب أن أستخدمه؟
تمثل جميعها نفس البايتات، لذا فإن الاختيار يدور حول من يقرأ وما الذي اعتاد عليه. كل قاعدة لها مكانة حيث تكون مناسبة بشكل طبيعي.
| قاعدة | أرقام لكل بايت | الأفضل ل | مثال على "؛H"؛ (72) |
|---|---|---|---|
| ثنائي (2) | 8 | التعلم، والعمل على مستوى البت، وإظهار البنية الدقيقة | 01001000 |
| السداسي العشري (16) | 2 | عرض البيانات الأولية وتصحيح الأخطاء وتفريغ الألوان والبايت | 48 |
| عشري (10) | 1 3 | قيم البايت الصديقة للإنسان، مرجع سريع | 72 |
| ثماني (8) | 3 | أذونات ملفات يونكس، بعض الأنظمة القديمة | 110 |
الثنائي هو الأكثر وضوحًا والأفضل للتدريس، لأنه يمكنك رؤية كل جزء، ولكنه مطول - ثمانية أحرف لكل بايت يتم جمعها بسرعة. النظام السداسي العشري هو أكثر ما ستستخدمه فعليًا في الممارسة العملية: فهو صغير الحجم، ويتم تعيينه بشكل نظيف إلى بايتات بحرفين لكل منهما، وهو التنسيق الذي تتحدث به برامج التحرير السداسية وتفريغ الذاكرة ورموز الألوان. يعد النظام العشري مفيدًا عندما تريد فقط معرفة قيمة رقمية للحرف '؛s. يعد Octal من العناصر المتبقية المتخصصة، والأكثر شيوعًا من بتات أذونات Unix مثل 755، وهنا بشكل أساسي تكون الأداة كاملة. ال مترجم ثنائي قم بالتبديل بين الأربعة دون إعادة إدخال أي شيء، حتى تتمكن من مقارنة التمثيلات جنبًا إلى جنب.
لماذا يعتبر UTF-8 مهمًا جدًا للتحويل الثنائي؟
لأن "؛ النص إلى ثنائي "؛ لا معنى له حتى تقرر ما هو التشفير الذي تقوم بالتحويل من خلاله، وبالنسبة للويب الحديث، تكون هذه الإجابة دائمًا تقريبًا UTF-8. ستظهر الأداة التي تتعامل مع ASCII فقط وكأنها تعمل - وستقوم بتحويل النص الإنجليزي بسعادة - ثم تخونك في اللحظة التي تظهر فيها بيانات العالم الحقيقي.
النظر في اللكنة "؛é"؛. في UTF-8 هو اثنين بايت، 11000011 10101001، أو c3 a9 في السداسية. الأداة التي تتعامل مع كل حرف على أنه بايت ASCII واحد لا يمكنها تمثيله على الإطلاق؛ في أحسن الأحوال، يسقط الحرف، وفي أسوأ الأحوال ينتج بايتًا واحدًا خاطئًا. الآن فكر في الرموز التعبيرية، وهي أربعة بايت في UTF-8. الأدوات الساذجة تشوه هذه تماما. لأن مترجم ثنائي هو برنامج ترميز UTF-8 حقيقي، "؛مقهى واقتباس؛ ينتج البايتات الخمسة الصحيحة، ولصق تلك البايتات الخمس يُرجع "؛ مقهى واقتباس؛ بالضبط.
هذا ليس أكاديميا. أي شخص يلمس محتوى دوليًا أو بيانات أنشأها المستخدم أو أي شيء يحتوي على رموز تعبيرية سيضرب أحرفًا متعددة البايت على الفور. إذا كنت تريد خلفية أعمق، فإن دليل الترميز BASE64 يغطي نفس التفكير على مستوى البايت للتشفير ذي الصلة، وفهم أحدهما يؤدي إلى النقر الآخر. الإصدار القصير: البايتات عالمية، ولكن التعيين بين البايتات والأحرف هو خيار، وUTF-8 هو الاختيار الذي تم إجراؤه على الويب.
حالات الاستخدام الشائعة حيث يكسب المترجم الثنائي رزقه
تعلم وتعليم كيفية تخزين أجهزة الكمبيوتر للنص
السبب الأكثر شيوعًا وراء بحث الأشخاص عن مترجم ثنائي هو فهم المفهوم. كتابة اسمك ومشاهدته وهو يتحول إلى بايت يجعل التجريد ملموسًا بطريقة لا تستطيع المحاضرة القيام بها. نظرًا لأن الأداة تعرض مجموعات البت الثمانية الدقيقة وتتيح لك التبديل إلى النظام السداسي والعشري، فإنها تعمل أيضًا كوسيلة تعليمية لكيفية ارتباط قواعد التشفير والأرقام. يمكن للطلاب رؤية ذلك "؛A"؛ هو 65، 01000001، و 41 في عرافة مرة واحدة.
مشاكل ترميز التصحيح
هذا هو المكان الذي أصل إليه. عندما تكون السلسلة تالفة - الكلاسيكية "؛ يظهر é كـ ©"؛ mojibake - أسرع طريقة لتشخيصه هي النظر إلى البايتات. يكشف تشفير السلسلة المكسورة ما إذا كانت البيانات مشفرة بشكل مزدوج، أو مقطوعة بأحرف متوسطة، أو مشوهة بواسطة نظام يفترض تشفيرًا خاطئًا. رؤية البايتات الأولية تتحول إلى غامضة وحاصل؛ الشخصيات خاطئة وحاصل؛ في تشخيص محدد وقابل للإصلاح.
العمل مع التنسيقات والبروتوكولات ذات المستوى المنخفض
يتضمن الكثير من العمل الفني قراءة البايتات مباشرة: حزم الشبكة ورؤوس الملفات والبروتوكولات الثنائية والأنظمة المدمجة كلها تتحدث بشكل سداسي وثنائي. القدرة على تحويل مقتطف من النص بسرعة إلى تمثيل البايت الخاص به، أو فك تشفير سلسلة سداسية تم التقاطها مرة أخرى إلى نص قابل للقراءة، مما يوفر التبديل المستمر للسياق. يتماشى العرض السداسي على وجه الخصوص مع ما يعرضه المحررون السداسيون ومصححو الأخطاء.
الألغاز وCTFs والرسائل المخفية
يعد الثنائي والسداسي عنصرًا أساسيًا في مسابقات التقاط العلم وغرف الهروب والألغاز العبقري غريب الأطوار. تعد سلسلة الآحاد والأصفار طريقة شائعة لإخفاء رسالة قصيرة، والقدرة على لصقها وفك تشفيرها - في أي من القواعد الأربع، مع إدخال مستمر أو متباعد - تؤدي إلى تقصير هذه الأمور. تساعد رسائل الخطأ الواضحة عندما يكون إدخال اللغز به خطأ مطبعي أو فاصل غير متوقع.
لماذا التحويل في المتصفح بدلا من الخادم؟
ال مترجم ثنائي يعمل بالكامل من جانب العميل. النص الذي تقوم بتشفيره وسلاسل البايت التي تقوم بفك تشفيرها لا تترك جهازك أبدًا، وتستمر الأداة في العمل مع اتصالك بمجرد تحميل الصفحة. وهذا مهم أكثر مما يظهر لأول مرة: غالبًا ما تكون السلاسل التي يقوم الأشخاص بتحويلها عبارة عن رموز مميزة أو معرفات داخلية أو مقتطفات من بيانات المستخدم أو بايتات بروتوكول تم التقاطها - وهو بالضبط نوع الشيء الذي يجب ألا تلصقه في خادم عشوائي. المعالجة داخل المتصفح تعني عدم وجود خادم للصقه. خصوصية البيانات في الأدوات عبر الإنترنت يقدم الدليل الحجة الكاملة للإصرار على هذا.
يقع التحويل الثنائي أيضًا جنبًا إلى جنب مع مجموعة من مهام التشفير ذات الصلة. ال Base64 التشفير/فك التشفير يتعامل مع التشفير المستخدم لنقل الثنائي عبر القنوات النصية فقط مثل البريد الإلكتروني وعناوين URL للبيانات. ال URL ترميز/فك تشفير URL يغطي نسبة الترميز لسلاسل الاستعلام. و ال مولد هاش يحول النص إلى ملخصات ذات طول ثابت عندما تحتاج إلى بصمة إصبع بدلاً من تمثيل قابل للعكس. بالنسبة للمجموعة الأوسع، أبقيها مفتوحة أثناء البناء، مجموعة أدوات مطور الويب تعتبر الجولة نقطة انطلاق جيدة.
أسئلة وأجوبة
كيف أقوم بتحويل النص إلى ثنائي؟
افتح المترجم الثنائي، اختر "؛ النص إلى Binary"؛ احتفظ بالمجموعة الأساسية على Binary واكتب النص الخاص بك. يتم ترميز كل حرف إلى قيمة بايت UTF-8 الخاصة به ويتم عرضه كمجموعات 8 بت، لذا "؛A"؛ يصبح 01000001. يتم تحديث المخرجات أثناء الكتابة ويمكن نسخها بنقرة واحدة، ويمكنك التبديل إلى سداسي عشري أو عشري أو ثماني دون إعادة إدخال أي شيء.
كيف يمكنني تحويل الثنائي إلى نص؟
حدد "؛ ثنائي للنص والاقتباس؛ ولصق الثنائي الخاص بك. يمكنك فصل البايتات بمسافات أو فواصل أو فواصل أسطر، أو لصق سلسلة واحدة متواصلة من البتات طالما أن الطول الإجمالي هو مضاعف لثمانية. تقوم الأداة بتجميع البتات في بايتات وفك تشفيرها كـ UTF-8 لإعادة بناء الأحرف الأصلية، وتقوم بالإبلاغ عن خطأ إذا كان الطول خاطئًا أو كان الحرف غير صالح.
ما هو ترميز الأحرف الذي يستخدمه المترجم الثنائي؟
ويستخدم UTF-8، وهو التشفير الذي تستخدمه شبكة الويب الحديثة ومعظم لغات البرمجة. تأخذ أحرف ASCII بايتًا واحدًا، ومعظم الأحرف المميزة تأخذ بايتتين، والعديد من البرامج النصية وجميع الرموز التعبيرية تأخذ ثلاث أو أربع بايتات. وهذا يعني أن الأداة تتعامل بشكل صحيح مع أكثر بكثير من اللغة الإنجليزية البسيطة، على عكس الأدوات البسيطة التي تحدد فقط أحرف ASCII البالغ عددها 128 حرفًا.
هل يمكن تحويله إلى النظام الست عشري والعشري والثماني أيضًا؟
نعم. يقوم المحدد الأساسي بتبديل الإخراج بين الثنائي والسداسي العشري والعشري والثماني، ويقبل فك التشفير أيًا من هذه القواعد كمدخل. يعرض النظام السداسي العشري حرفين لكل بايت، وثلاثة أرقام ثماني، والقيمة العشرية العادية من 0 إلى 255، والثنائية الثمانية بتات الكاملة. تمثل الأربعة نفس البايتات الأساسية.
لماذا فاز '؛ وفك التشفير الثنائي الخاص بي؟
السببان الأكثر شيوعًا هما طول البت الذي لا يمثل مضاعفًا لثمانية والأحرف الضالة غير الصالحة للقاعدة المختارة. تخبرك الأداة بالضبط بالرمز المميز غير الصالح أو أن الطول خاطئ، لذا يمكنك إصلاحه. يتم أيضًا وضع علامة على تسلسل البايت غير الصالح UTF-8 - على سبيل المثال، حرف متعدد البايت تم قطعه - بدلاً من فك تشفيره في البيانات المهملة.
هل يدعم المترجم الثنائي الرموز التعبيرية والنص غير الإنجليزي؟
نعم. لأنه يتم تشفيره من خلال UTF-8، يتم تمثيل الأحرف خارج نطاق ASCII بالتسلسل الصحيح المكون من بايتين أو ثلاثة أو أربعة بايت، ويقوم فك التشفير بإعادة تجميعها في الحرف الأصلي. يصبح الرمز التعبيري أربع بايتات ورحلات ذهابًا وإيابًا إلى نفس الرمز التعبيري، ويعمل النص الصيني أو العربي أو اللاتيني المميز بنفس الطريقة.
هل من الآمن تحويل النص الحساس هنا؟
نعم. يتم تشغيل كل تحويل في JavaScript داخل متصفحك، لذلك لا يتم تحميل أي شيء تدخله أو تسجيله أو تخزينه، وتستمر الأداة في العمل دون أي اتصال بالإنترنت بمجرد تحميلها. يمكنك تحويل الرموز المميزة أو المعرفات الداخلية أو الرسائل الخاصة بأمان دون مغادرة جهازك.
ما الفرق بين ASCII وUTF-8 في هذه الأداة؟
ASCII عبارة عن مجموعة مكونة من 7 بتات تغطي 128 حرفًا إنجليزيًا، في حين أن UTF-8 عبارة عن ترميز متغير الطول يتضمن كل ASCII بالإضافة إلى كل أحرف Unicode الأخرى. نظرًا لأن UTF-8 عبارة عن مجموعة شاملة من ASCII، فإن النص الإنجليزي ينتج بالضبط البايتات التي يتوقعها جدول ASCII، بينما تحصل الحروف المحركة والبرامج النصية الأخرى والرموز التعبيرية على التسلسلات الصحيحة متعددة البايتات التي لا يستطيع ASCII تمثيلها ببساطة.



