บทความนี้อธิบายการใช้งาน Java ของคลาสเครื่องมือแปลงไบนารี แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
นำเข้า java.nio.charset.charset;/*** hexadecimal (ย่อเป็น hex หรือตัวห้อย 16) เป็นระบบพกพาในวิชาคณิตศาสตร์ที่เปลี่ยนจาก 16 ถึง 1 โดยทั่วไปจะแสดงโดยตัวเลข 0 ถึง 9 และตัวอักษร A ถึง F (โดยที่: A ~ f คือ 10 ~ 15) <br> * ตัวอย่างเช่นหมายเลขทศนิยม 57 เขียนขึ้นในไบนารี 111001 และ hexadecimal 39 เขียนใน hexadecimal <br> * เพื่อแยกแยะความแตกต่างระหว่างค่าเลขฐานสิบหกและทศนิยมภาษาเช่น Java และ C จะนำหน้า 0x ด้านหน้าของเลขฐานสิบหกเช่น 0x20 คือ 32 ในทศนิยมแทน 20 ในทศนิยม <br> * * อ้างอิง: https://my.oschina.net looly * */คลาสสาธารณะ hexkit {/** * อาร์เรย์อักขระตัวพิมพ์เล็กที่ใช้ในการสร้างเอาต์พุตของ hexadecimal ตัวละคร */ถ่านสุดท้ายคงที่ [] digits_lower = {'0', '1', '2', '3', '4', '5', '6', '8', ' - / *** อาร์เรย์อักขระทุนที่ใช้ในการสร้างผลลัพธ์ของตัวละครเลขฐานสิบหก*/ ถ่านสุดท้ายคงที่ [] digits_upper = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a' // -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * @return hex char [] */ public static char [] encodehex (byte [] data) {return encodehex (data, true); } / *** แปลงอาร์เรย์ไบต์เป็นอาร์เรย์อักขระ hexadecimal** @param str str String* @param charset encoding* @return hex char []* / public Static Char [] ENCODEHEX }/** * แปลงอาร์เรย์ไบต์เป็นอาร์เรย์อักขระ hexadecimal * * @param data byte [] * @param toLowerCase <code> true </code> ถ่ายโอนไปยังรูปแบบตัวพิมพ์เล็ก, <code> false </code> ถ่ายโอนไปยังรูปแบบ uppercase * @return hex char [] ENCODEHEX (ข้อมูล, TOLOWERCASE? DIGITS_LOWER: Digits_UPPER); } / ** * แปลงอาร์เรย์ไบต์เป็น hexadecimal string * * @param data byte [] * @return hexstring * / สตริงคงที่ public encodehexstr (byte [] ข้อมูล) {return encodehexstr (data, true); }/** * แปลงอาร์เรย์ไบต์เป็น hex string * * @param data byte [] * @param toLowerCase <code> true </code> ถ่ายโอนไปยังรูปแบบตัวพิมพ์เล็ก, <code> false </code> ถ่ายโอนไปยังรูปแบบตัวพิมพ์ใหญ่ * @return hexstring */สตริงคงที่ Digits_lower: Digits_upper); - - - DecodeHexstr (hexstr.tochararray (), charset); } / *** แปลงอาร์เรย์อักขระ hex เป็นสตริง** @param hexdata hex char []* @param charset encoding* @return string* / สตริงคงที่สาธารณะ decodehexstr (char [] hexdata, charset charset) {return strkit.str (decodehex } / ** * แปลงอาร์เรย์ตัวละคร hex เป็น byte array * * @param hexdata hex char [] * @return byte [] * @throws runtimeException ถ้าแหล่งที่มาของ hex array เป็นความยาวแปลก ๆ if ((len & 0x01)! = 0) {โยน runtimeException ใหม่ ("จำนวนอักขระคี่"); } byte [] out = byte ใหม่ [len >> 1]; // ตัวละครสองตัวสร้างค่า hex สำหรับ (int i = 0, j = 0; j <len; i ++) {int f = todigit (hexdata [j], j) << 4; J ++; f = f | Todigit (hexdata [j], j); J ++; ออก [i] = (ไบต์) (f & 0xff); } return out; - - todigits) {ส่งคืนสตริงใหม่ (encodehex (data, todigits)); } / ** * แปลงอาร์เรย์ไบต์เป็นอาร์เรย์อักขระ hex * * @param data byte [] * @param todigits char [] สำหรับการควบคุมเอาต์พุต * @return hex char [] * / char แบบคงที่ส่วนตัว [] encodehex (byte [] data, char [] todigits) 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 ch hexadecimal char* @param ดัชนีตำแหน่งของ hexadecimal ตัวละครในอาร์เรย์ตัวละคร* @return integer* @throws runtimexception ตัวละคร digit (ch, 16); if (digit == -1) {โยน runtimeException ใหม่ ("อักขระ hexadecimal ที่ผิดกฎหมาย" + ch + "ที่ดัชนี" + ดัชนี); } ส่งคืนตัวเลข; - - bstring.length () % 8! = 0) ส่งคืนโมฆะ; StringBuffer tmp = new StringBuffer (); int itmp = 0; สำหรับ (int i = 0; i <bstring.length (); i += 4) {itmp = 0; สำหรับ (int j = 0; j <4; j ++) {itmp + = integer.parseint (bstring.substring (i + j, i + j + 1)) << (4 - j - 1); } tmp.append (integer.tohexstring (ITMP)); } return tmp.toString (); } / ** * hexstring * @param hexstring * @return * / สตริงคงที่สาธารณะ hex2binary (สตริง hexstring) {ถ้า (hexstring == null || hexstring.length () % 2! = 0) ส่งคืน null; String bstring = "", tmp; สำหรับ (int i = 0; i <hexstring.length (); i ++) {tmp = "0000" + จำนวนเต็ม TobinaryString (integer.parseint (hexstring.substring (i, i + 1), 16)); bstring += tmp.substring (tmp.length () - 4); } ส่งคืน bstring; } / ** * แปลงไบนารีเป็น hex * @param buf * @return * / สตริงคงที่สาธารณะ binary2hex (byte buf []) {stringbuffer sb = new Stringbuffer (); สำหรับ (int i = 0; i <buf.length; i ++) {string hex = integer.tohexstring (buf [i] & 0xff); if (hex.length () == 1) {hex = '0' + hex; } sb.append (hex.touppercase ()); } return sb.toString (); } / ** * แปลง hexstr เป็น binary * @param hexstr * @return * / public static byte [] hex2byte (string hexstr) {ถ้า (hexstr.length () <1) ส่งคืน null; ไบต์ [] result = byte ใหม่ [hexstr.length () / 2]; สำหรับ (int i = 0; i <hexstr.length () / 2; i ++) {int high = integer.parseint (hexstr.substring (i * 2, i * 2+1), 16); int low = integer.parseint (hexstr.substring (i * 2 + 1, i * 2 + 2), 16); ผลลัพธ์ [i] = (ไบต์) (สูง * 16 + ต่ำ); } ผลตอบแทนผลลัพธ์; -PS: นี่คือเครื่องมือแปลงและการคำนวณออนไลน์สำหรับเว็บไซต์นี้ ฉันเชื่อว่ามันจะเป็นประโยชน์กับคุณ:
เครื่องมือแปลงออนไลน์โดยพลการ:
http://tools.vevb.com/transcoding/hexconvert
เครื่องคิดเลขมาตรฐานออนไลน์:
http://tools.vevb.com/jisuanqi/jsq
เครื่องคิดเลขทางวิทยาศาสตร์ออนไลน์:
http://tools.vevb.com/jisuanqi/jsqkeexue
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอัลกอริทึม Java ผู้อ่านที่มีความสนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "โครงสร้างข้อมูล Java และการสอนอัลกอริทึม", "บทสรุปของเคล็ดลับการดำเนินงาน Java Dom", "บทสรุปของไฟล์ Java และเคล็ดลับการดำเนินการไดเรกทอรี" และ "สรุป
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน