بعض الكود في هذه المقالة مقتطف من الإنترنت ويتم تنظيمها قليلاً للتحويل بين البايتات والمساج.
/** * مرجع Apache Commons <a * href = "http://commons.apache.org/codec/"> http://commons.apache.org/codec/ </a> * Byte يحتل 8 بتات ، وشخصيات hexadecimal 4 بتات. لذلك ، يمكن تحويل بايت واحد إلى حرفين سداسي عشري المقابل ، أي ، يتم تحويل البايت المرتفعة 4 و 4 بايت إلى أحرف سداسية سداسية المقابلة H و L على التوالي ، ومجتمعة. وينطبق الشيء نفسه على التحول المعاكس. **/public Class Hex {/*** الإخراج لإنشاء أحرف سداسية*/char static final char [] private [] digits_lower = {'0' ، '1' ، '2' ، '3' ، '4' ، '5' ، '6' ، '7' ، '8' ، '9' ، 'a' ، 'b' ، 'c' ، 'd' ، 'e' ، 'f'} ؛ / *** الإخراج لإنشاء أحرف سداسية*/ char char static static static [] digits_lower = {'0' ، '1' ، '2' ، '3' ، '4' ، '5' ، '6' ، '7' ، '8' ، 9 '،' a '،' b '،' c '،' d '،' e '،' f '} ؛ /*** تحويل مجموعة بايت إلى صفيف شخصية سداسي عشري. * * نظرًا لاستخدام حرفين لتمثيل بايت ، سيكون طول Char [] مرتين طول البايت المعلمة []. * * param data * byte [] يستخدم للتحويل إلى أحرف hex * @REGAN char [] يحتوي على أحرف hex */ char static static [] encodeHex (البيانات النهائية [] data) {return EncodeHex (البيانات ، صواب) ؛ } /*** قم بتحويل مجموعة بايت إلى صفيف حرف Hex. * * نظرًا لاستخدام حرفين لتمثيل بايت ، سيكون طول Char [] مرتين طول البايت المعلمة []. * * * param data * byte [] للتحويل إلى أحرف hex * param tolowercase * <code> true </code> نقل إلى تنسيق صغير ، <code> false </code> نقل إلى تنسيق كبير * @REGRAURN char [] يحتوي على أحرف hex */char char encodehex النهائية (DATA ، DATARACES. Digits_upper) ؛ } /*** قم بتحويل مجموعة بايت إلى صفيف حرف Hex. * * نظرًا لاستخدام حرفين لتمثيل بايت ، سيكون طول Char [] مرتين طول البايت المعلمة []. * * param data * byte [] للتحويل إلى أحرف hex * param todigits * alphabet للتحكم في الإخراج * regurn char [] تحتوي على أحرف hex */ char char static [] encodehex المحمية (Data byte [] final ، char [] final todigits) {int l = data.length ؛ char [] out = new Char [l << 1] ؛ // تشكل حرفين قيمة سداسي عشرية. لـ (int i = 0 ، j = 0 ؛ i <l ؛ i ++) {out [j ++] = todigits [(0xf0 & data [i]) >>> 4] ؛ Out [j ++] = todigits [0x0f & data [i]] ؛ } العودة ؛ } /*** قم بتحويل مجموعة بايت إلى سلسلة سداسية عشرية. * * نظرًا لاستخدام حرفين لتمثيل بايت ، سيكون طول السلسلة المرتجعة ضعف طول بايت المعلمة []. * * param data * byte [] للتحويل إلى أحرف hex * @regurn hex string */ public static string EncodeHexStr (byte byte [] النهائي) {return EncodeHexStr (data ، true) ؛ } /*** قم بتحويل مجموعة بايت إلى سلسلة سداسية. * * نظرًا لاستخدام حرفين لتمثيل بايت ، سيكون طول السلسلة المرتجعة ضعف طول بايت المعلمة []. * * param data * byte [] للتحويل إلى أحرف hex * param tolowercase * <code> true </code> نقل إلى تنسيق صغير ، <code> خطأ </code> نقل إلى تنسيق كبير * @Return HexString */public static string encodeHexstr (] byte [] data tolowercase) } /*** قم بتحويل مجموعة بايت إلى سلسلة سداسية. * * نظرًا لاستخدام حرفين لتمثيل بايت ، سيكون طول السلسلة المرتجعة ضعف طول بايت المعلمة []. * * param data * byte [] للتحويل إلى أحرف hex * param todigits * alphabet للتحكم في الإخراج * @regurn hex string */ string static string encodehexstr (byte [] byte ، char [] todigits) {return encodehex (data ، tdigits)) ؛ } / ** * تحويل صفيف أحرف HEX إلى صفيف البايت * * param data * Hex char [] * @REGANTURN BYTE [] * throws RunTimeException * إذا كان طول صفيف حرف السداسي المصدر هو رقم فردي ، فسيتم إلقاء استثناء وقت التشغيل * / بايت ثابت عام [] decodehex (char [] data) if ((ly & 0x01)! = 0) {رمي new runTimeException ("عدد فردي من الأحرف.") ؛ } // بايت يتوافق مع حرفين اثنين ، قم بتعيين حجم البايت [] إلى نصف حجم char [] byte [] out = new byte [len >> 1] ؛ // تشكل حرفين قيمة سداسي عشرية. لـ (int i = 0 ، j = 0 ؛ j <len ؛ i ++) {int f = todigit (data [j] ، j) << 4 ؛ J ++ ؛ f = f | TODIGIT (البيانات [J] ، J) ؛ J ++ ؛ Out [i] = (byte) (f & 0xff) ؛ } العودة ؛ } /*** تحويل الأحرف السداسية إلى عدد صحيح. * * @param ch * يتم تحويل الأحرف إلى أعداد صحيحة * param index * موضع الحرف في صفيف الأحرف * @RETERN * throws runtimeexception * عندما لا يكون CH شخصية سداسية قانوني ، قم برمي هذا الاستثناء */ static int toDigit (Final Char ch ، Final Int Index) if (digit == -1) {رمي new RunTimeException ("الحرف السداسي غير الشرعي" + ch + "في index" + index) ؛ } رقم الإرجاع ؛ } public static void main (string [] args) {String srcstr = "helloWorld!" ؛ سلسلة encodestr = EncodeHexStr (srcstr.getbytes () ، false) ؛ سلسلة decodestr = سلسلة جديدة (decodeHex (encodestr.tochararray ())) ؛ System.out.println ("Source String:" + SRCSTR) ؛ System.out.println ("Standard مشفر كـ hex:" + encodester) ؛ System.out.println ("hexadecimal فك التشفير كسلسلة:" + decodestr) ؛ }}