รหัสบางส่วนในบทความนี้ตัดตอนมาจากอินเทอร์เน็ตและจัดระเบียบเล็กน้อยเพื่อแปลงระหว่างไบต์และเลขฐานสิบหก
/** * อ้างอิง Apache Commons <a * href = "http://commons.apache.org/codec/"> http://commons.apache.org/codec/ </a> * ไบต์ครอบครอง 8 บิต ดังนั้นไบต์หนึ่งสามารถแปลงเป็นสองตัวอักษรหกเหลี่ยมที่สอดคล้องกันนั่นคือไบต์สูง 4 และต่ำ 4 บิตจะถูกแปลงเป็นอักขระเลขฐานสิบหกที่สอดคล้องกัน H และ L ตามลำดับและรวมกัน เช่นเดียวกับการเปลี่ยนแปลงตรงข้าม **/คลาสสาธารณะ hex {/*** เอาท์พุทสำหรับการสร้างตัวอักษร hex*/ถ่านสุดท้ายคงที่ [] digits_lower = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', ' / *** เอาท์พุทสำหรับการสร้างตัวอักษร hex*/ ถ่านสุดท้ายคงที่ [] digits_lower = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', ' /*** แปลงอาร์เรย์ไบต์เป็นอาร์เรย์ตัวละครเลขฐานสิบหก * * เนื่องจากตัวอักษรสองตัวใช้เพื่อแสดงไบต์ความยาวถ่านที่ส่งคืนจะมีความยาวสองเท่าของไบต์พารามิเตอร์ [] * * @param data * byte [] ใช้ในการแปลงเป็น hex อักขระ * @return char [] ที่มี hex อักขระ */ public char [] encodehex (byte สุดท้าย [] ข้อมูล) {return encodehex (data, true); } /*** แปลงอาร์เรย์ไบต์เป็นอาร์เรย์ตัวละคร hex * * เนื่องจากตัวอักษรสองตัวใช้เพื่อแสดงไบต์ความยาวถ่านที่ส่งคืนจะมีความยาวสองเท่าของไบต์พารามิเตอร์ [] * * @param data * byte [] สำหรับการแปลงเป็น hex อักขระ * @param toLowercase * <code> true </code> ถ่ายโอนไปยังรูปแบบตัวพิมพ์เล็ก <code> false </code> ถ่ายโอนไปยังรูปแบบตัวพิมพ์ใหญ่ * @return char [] Digits_lower: Digits_upper); } /*** แปลงอาร์เรย์ไบต์เป็นอาร์เรย์ตัวละคร hex * * เนื่องจากตัวอักษรสองตัวใช้เพื่อแสดงไบต์ความยาวถ่านที่ส่งคืนจะมีความยาวสองเท่าของไบต์พารามิเตอร์ [] * * @param data * byte [] สำหรับการแปลงเป็น hex อักขระ * @param todigits * ตัวอักษรสำหรับการควบคุมเอาต์พุต * @return char [] ที่มี hex อักขระ hex */ char char [] encodehex char [] out = char ใหม่ [l << 1]; // ตัวละครสองตัวสร้างค่า hex สำหรับ (int i = 0, j = 0; i <l; i ++) {out [j ++] = todigits [(0xf0 & data [i]) >>> 4]; ออก [j ++] = todigits [0x0f & data [i]]; } return out; } /*** แปลงอาร์เรย์ไบต์เป็นสตริงเลขฐานสิบหก * * เนื่องจากอักขระสองตัวถูกใช้เพื่อแสดงไบต์ความยาวสตริงที่ส่งคืนจะมีความยาวสองเท่าของไบต์พารามิเตอร์ [] * * @param data * byte [] สำหรับการแปลงเป็น hex อักขระ * @return hex string */ สตริงคงที่ public encodehexstr (byte สุดท้าย [] ข้อมูล) {return encodehexstr (data, true); } /*** แปลงอาร์เรย์ไบต์เป็นสตริง hex * * เนื่องจากอักขระสองตัวถูกใช้เพื่อแสดงไบต์ความยาวสตริงที่ส่งคืนจะมีความยาวสองเท่าของไบต์พารามิเตอร์ [] * * @param data * byte [] สำหรับการแปลงเป็น hex อักขระ * @param toLowerCase * <code> true </code> ถ่ายโอนไปยังรูปแบบตัวพิมพ์เล็ก, <code> false </code> ถ่ายโอนไปยังรูปแบบตัวพิมพ์ใหญ่ * @return hexstring */สตริงคงที่ Digits_upper); } /*** แปลงอาร์เรย์ไบต์เป็นสตริง hex * * เนื่องจากอักขระสองตัวถูกใช้เพื่อแสดงไบต์ความยาวสตริงที่ส่งคืนจะมีความยาวสองเท่าของไบต์พารามิเตอร์ [] * * @param data * byte [] สำหรับการแปลงเป็น hex อักขระ * @param todigits * ตัวอักษรสำหรับการควบคุมเอาต์พุต * @return hex string */ สตริงคงที่ป้องกัน encodehexstr (byte [] data, char [] todigits) {ส่งคืนสตริงใหม่ (encodehex (data, toDigits); } / ** * แปลง hex อักขระอาร์เรย์เป็น byte array * * @param data * hex char [] * @return byte [] * @throws runtimeException * หากความยาวของอาร์เรย์ตัวอักษร hex เป็นจำนวนคี่ if ((len & 0x01)! = 0) {โยน runtimeException ใหม่ ("จำนวนอักขระคี่"); } // ไบต์ที่สอดคล้องกับสองตัวอักษร hex ตั้งค่าไบต์ [] ขนาดครึ่งหนึ่งของขนาดของถ่าน [] byte [] out = byte ใหม่ [len >> 1]; // ตัวละครสองตัวสร้างค่า hex สำหรับ (int i = 0, j = 0; j <len; i ++) {int f = todigit (data [j], j) << 4; J ++; f = f | todigit (data [j], j); J ++; ออก [i] = (ไบต์) (f & 0xff); } return out; } /*** แปลงอักขระเลขฐานสิบหกให้เป็นจำนวนเต็ม * * @param ch ตัวละคร * ที่จะแปลงเป็นจำนวนเต็ม * @param index * ตำแหน่งของตัวละครในอาร์เรย์ตัวละคร * @return integer * @throws runtimeException * เมื่อ ch ไม่ใช่ตัวละคร hexadecimal ตามกฎหมาย if (digit == -1) {โยน runtimeException ใหม่ ("อักขระ hexadecimal ที่ผิดกฎหมาย" + ch + "ที่ดัชนี" + ดัชนี); } ส่งคืนตัวเลข; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {string srcstr = "helloWorld!"; String encodestr = encodeHexstr (srcstr.getBytes (), false); สตริง decodestr = สตริงใหม่ (decodehex (encodestr.tochararray ())); System.out.println ("สตริงต้นทาง:" + srcstr); System.out.println ("มาตรฐานที่เข้ารหัสเป็น hex:" + encodestr); System.out.println ("hexadecimal ถอดรหัสเป็นสตริง:" + decodestr); -