سيجد الأشخاص الذين يستخدمون UE مناسبة للغاية لعرض الملفات في سداسي عشري. لماذا قرصة؟ عندما ترغب في تشفير الملف ، وترميز ، وترميز الملف ، فإن حفنة من 01 ثنائي ستظهر وينظر إليها. بعد كل شيء ، ملف عرض سداسي عشري قصير ومريح. على الأقل ، قمت بتطبيق البطاقة خلال امتحان القبول في المدرسة الثانوية وامتحان القبول في الكلية. بالطبع ، يمكن لأحذية الأطفال التي يمكن أن ترسم 1248 في امتحان القبول في المدارس المتوسطة وامتحان القبول في الكلية في لمحة عن أنهم لن يكون لديهم بالتأكيد فرصة لكونهم مهنة "مقدسة" للمبرمجين ...
لأنني حاولت المشاركة في مسابقة ابتكار تعميم العلوم من قبل ، فقد فعلت Dongdong في ذلك الوقت ، وقراءة الملف في تدفقات البايت وتحويله إلى سلاسل ثنائية ، ورباعية ، وسداسية عشرية ، ثم إخراجها إلى وحدة التحكم في وقت واحد. ثم ، وفقًا لقيمة كل بت ، يتم عرضه في مصفوفة من ألوان و 4 ألوان و 16 لونًا على التوالي. الغرض من كتابة هذا هو استخدام الكاميرا لتحديدها ، ثم استعادتها إلى دفق بايت واكتبها إلى الملف. تصميم البرنامج هذا هو نتاج هجين من وقائعين مؤلمة - 1. لا يتطلب أي نقل من خلال أي وسائط وأجهزة USB ؛ يمكنك تجربة هذا السؤال ، أو استخدام كاميرا أو مكبر صوت لإرسال وتلقي الملفات لمعرفة من يمكنه نقله بسرعة.
بالطبع ، الجزء الأكثر أهمية هو أن دفق البايت للملف يتم قراءة بتيت 8 بتات ، وعرضها في اثنين من السداسي. نظرًا لأنك قد تواجه الموقف الذي يتم فيه تحويل البايت إلى INT و COMPLEMENT ، فمن الأفضل توحيده إلى رقم إيجابي أولاً.
نسخة الكود كما يلي:
int النتيجة = bytes & 0xff ؛
لا تقلل من شأن هذه الجملة ، إنها في الواقع ممتعة للغاية. فكر في الأمر بعناية ، إذا قمت بإضافة 0xff إلى Shenma وتصبح رقمًا إيجابيًا؟ 0xff هو 1 ، لذلك لا يعني أنه لا يوجد تغيير في العملية؟ همف ، سألني أحدهم من قبل. نطاق البايت هو -128 ~ 127 ، وليس 0 ~ 255 ، لذلك ، لا يجب استبدال المهام مثل البايت B = -42 ؛
ليس من الصعب صنع هذا وتحويله إلى سلسلة من رقمين. إذا كنت تفكر في الأمر بعناية ، فهل هناك فئة مألوفة ولكن غير مألوفة تجلب هذه الوظيفة مباشرة؟ هذا صحيح ، إنه فقط يستخدم عدد صحيح! ولكن لا تقلق ، قبل استخدامه ، عليك القيام ببعض التحركات الصغيرة على هذا int.
نسخة الكود كما يلي:
(بايت و 0xFF) + 0x100
هل تعرف لماذا؟ هذا هو +256 ، فقط لرؤيته بشكل أكثر حدًا ، ما عليك سوى إضافة واحدة في المقدمة. لأنه إذا تم تحويل INT الذي تحصل عليه إلى سلسلة ، فمن المحتمل أن يكون هناك بت واحد فقط ، أي إذا فقد البايت عندما يتم تحويل السداسي عشري إلى سداسي عشري ، فهل سيتم وضع البرنامج بأكمله بالكامل؟ لكي تكون آمنًا ، من الأفضل توحيد ثلاثة.
يمكنك تجربة ذلك لرؤية جميع المخرجات بعد تغيير البايت إلى سداسي عشري
نسخة الكود كما يلي:
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
لـ (int i = -128 ؛ i <128 ؛ i ++) {
البايت ب = (بايت) i ؛
System.out.println (Integer.ToString ((B & 0xff) ، 16)) ؛
}
}
رؤية هذا ، هل تعتقد: لماذا أنت غبي جدا؟ لماذا لم يتم تغيير INT في الحلقة إلى بايت؟ حسنًا ، يمكنك تجربتها ، ولن أجربها على أي حال ...
لذا ، فإن الرمز الذي يحول البايت أخيرًا إلى سداسي عشري ثنائي البت
نسخة الكود كما يلي:
integer.toString ((bytes & 0xff) + 0x100 ، 16) .SubString (1) ؛
بالنسبة للثنائي ، الربع والأوكتال ، كلهم متماثلون ، لذلك لن أعطي مثالاً. تم تنفيذه في جملة واحدة فقط من الكود ، إنه لأمر مدهش ...
بعد ذلك ، استخدم شعرية المصفوفة لعرض إطار الملف حسب الإطار ، واستخدم الكاميرا لالتقاط لون التعرف ، ثم قم بتحويل السلسلة ، وتعليق اللون لإعلام الطرف الآخر أن التعرف قد اكتمل ثم استبدال الصورة التالية. .. هذه الدورة هي حتى تنتهي شعرية المصفوفة. لن أنشر هذا الجزء من الكود ، يمكن إنتاج العملية بأكملها بواسطة YY مع خيال غني ...
ثم يتم إرجاع السلسلة مرة أخرى إلى تيار البايت ، وهو أمر بسيط للعيش فيه
نسخة الكود كما يلي:
(بايت) integer.parseint (سلسلة ، 16)
لا تحتاج حتى إلى عمليات بت ، فقط تنتج النتائج ، وضعها في صفيف بايت ، واكتبها مرارًا وتكرارًا مع كتابة FileOutputStream! لا تنس إيقاف تشغيل دفق الإدخال والإخراج