ถึงHexString
public static String toHexString(int i) ส่งคืนการแสดงสตริงของพารามิเตอร์จำนวนเต็มในรูปแบบจำนวนเต็มเลขฐานสิบหกที่ไม่ได้ลงนาม
ถ้าอาร์กิวเมนต์เป็นค่าลบ ค่าจำนวนเต็มที่ไม่ได้ลงนามจะเป็นอาร์กิวเมนต์บวก 232 มิฉะนั้น จะเท่ากับอาร์กิวเมนต์ แปลงค่าเป็นสตริงตัวเลข ASCII เลขฐานสิบหก (ฐาน 16) โดยไม่มีศูนย์นำหน้า หากค่าขนาดที่ไม่ได้ลงนามเป็นศูนย์ จะแสดงด้วยอักขระศูนย์ '0' ('/u0030') มิฉะนั้น อักขระตัวแรกในการแสดงขนาดที่ไม่ได้ลงนามจะไม่ใช่อักขระศูนย์ ใช้อักขระต่อไปนี้เป็นเลขฐานสิบหก:
0123456789abcdef
อักขระเหล่านี้มีตั้งแต่ '/u0030' ถึง '/u0039' และตั้งแต่ '/u0061' ถึง '/u0066' หากคุณต้องการอักษรตัวพิมพ์ใหญ่ คุณสามารถเรียกใช้เมธอด String.toUpperCase() กับผลลัพธ์ได้:
Integer.toHexString(n).toUpperCase()
พารามิเตอร์:
i - จำนวนเต็มที่จะแปลงเป็นสตริง
กลับ:
การแสดงสตริงของค่าจำนวนเต็มที่ไม่ได้ลงนามซึ่งแสดงเป็นอาร์กิวเมนต์เลขฐานสิบหก (ฐาน 16)
//แปลงสตริงเป็นการเข้ารหัสเลขฐานสิบหก
สาธารณะสตริงคงที่ toHexString (สตริง s)
-
สตริง str="";
สำหรับ (int i=0;i<s.length();i++)
-
int ch = (int) s.charAt (i);
สตริง s4 = จำนวนเต็มtoHexString(ch);
STR = STR + s4;
-
กลับ STR;
-
// แปลงการเข้ารหัสเลขฐานสิบหกเป็นสตริง
สาธารณะสตริงคงที่ toStringHex (สตริง s)
-
ไบต์[] baKeyword = ไบต์ใหม่[s.length()/2];
สำหรับ(int i = 0; i < baKeyword.length; i++)
-
พยายาม
-
baKeyword[i] = (ไบต์)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));
-
จับ (ยกเว้น e)
-
e.printStackTrace();
-
-
พยายาม
-
s = new String(baKeyword, "utf-8");//UTF-16le:ไม่ใช่
-
จับ (ข้อยกเว้น e1)
-
e1.printStackTrace();
-
กลับ;
-
// แปลงการเข้ารหัสเลขฐานสิบหกเป็นสตริง
สาธารณะสตริงคงที่ toStringHex (สตริง s)
-
ไบต์[] baKeyword = ไบต์ใหม่[s.length()/2];
สำหรับ(int i = 0; i < baKeyword.length; i++)
-
พยายาม
-
baKeyword[i] = (ไบต์)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));
-
จับ (ยกเว้น e)
-
e.printStackTrace();
-
-
พยายาม
-
s = new String(baKeyword, "utf-8");//UTF-16le:ไม่ใช่
-
จับ (ข้อยกเว้น e1)
-
e1.printStackTrace();
-
กลับ;
-
โมฆะคงที่สาธารณะ main (String [] args) {
System.out.println(encode("中文"));
System.out.println(decode(encode("中文")));
-
-
* ชุดอักขระตัวเลขฐานสิบหก
-
สตริงคงที่ส่วนตัว hexString = "0123456789ABCDEF";
-
* เข้ารหัสสตริงเป็นเลขฐานสิบหก เหมาะสำหรับตัวอักษรทุกตัว (รวมภาษาจีนด้วย)
-
สาธารณะเข้ารหัสสตริงคงที่ (String str)
-
//รับอาร์เรย์ไบต์ตามการเข้ารหัสเริ่มต้น
ไบต์ [] ไบต์ = str.getBytes ();
StringBuilder sb=ใหม่ StringBuilder(bytes.length*2);
// แยกแต่ละไบต์ในอาร์เรย์ไบต์ให้เป็นจำนวนเต็มฐานสิบหก 2 หลัก
สำหรับ(int i=0;i<bytes.length;i++)
-
sb.append(hexString.charAt((ไบต์[i]&0xf0)>>4));
sb.append(hexString.charAt((ไบต์[i]&0x0f)>>0));
-
กลับ sb.toString();
-
-
* ถอดรหัสเลขฐานสิบหกเป็นสตริง ใช้ได้กับอักขระทุกตัว (รวมถึงภาษาจีนด้วย)
-
สาธารณะถอดรหัสสตริงคงที่ (สตริงไบต์)
-
ByteArrayOutputStream baos=ใหม่ ByteArrayOutputStream(bytes.length()/2);
//ประกอบเลขฐานสิบหก 2 หลักแต่ละตัวให้เป็นหนึ่งไบต์
สำหรับ(int i=0;i<bytes.length();i+=2)
baos.write((hexString.indexOf(bytes.charAt(i))<<4 |hexString.indexOf(bytes.charAt(i+1))));
กลับสตริงใหม่ (baos.toByteArray());
-
วิธีที่สอง:
พิมพ์อาร์เรย์ไบต์ที่ระบุไปยังคอนโซลในรูปแบบเลขฐานสิบหก
คลาสสาธารณะ Util {
ยูทิลิตี้สาธารณะ () {
-
-
* พิมพ์อาร์เรย์ไบต์ที่ระบุไปยังคอนโซลในรูปแบบเลขฐานสิบหก
* @param คำใบ้ String
* @param ไบต์[]
* @return เป็นโมฆะ
-
โมฆะคงที่สาธารณะ printHexString (คำใบ้สตริง, ไบต์ [] b) {
System.out.print (คำใบ้);
สำหรับ (int i = 0; i <b.length; i++) {
สตริง hex = Integer.toHexString(b[i] & 0xFF);
ถ้า (hex.length() == 1) {
ฐานสิบหก = '0' + ฐานสิบหก;
-
System.out.print(hex.toUpperCase() + " ");
-
System.out.println("");
-
-
-
* @param ไบต์[]
* @return สตริง
-
สาธารณะสตริง Bytes2HexString (ไบต์ [] b) {
สตริง ret = "";
สำหรับ (int i = 0; i <b.length; i++) {
สตริง hex = Integer.toHexString(b[i] & 0xFF);
ถ้า (hex.length() == 1) {
ฐานสิบหก = '0' + ฐานสิบหก;
-
ret += hex.toUpperCase();
-
กลับมาอีกครั้ง;
-
-
* รวมอักขระ ASCII สองตัวเป็นหนึ่งไบต์
* เช่น: "EF"--> 0xEF
* @param src0 ไบต์
* @param src1 ไบต์
* @return ไบต์
-
ไบต์สาธารณะแบบคงที่ uniteBytes (ไบต์ src0, ไบต์ src1) {
ไบต์ _b0 = Byte.decode("0x" + new String(new byte[]{src0})).byteValue();
_b0 = (ไบต์)(_b0 << 4);
ไบต์ _b1 = Byte.decode("0x" + สตริงใหม่ (ไบต์ใหม่ []{src1})).byteValue();
ไบต์ ret = (ไบต์)(_b0 ^ _b1);
กลับมาอีกครั้ง;
-
-
* แปลงสตริง src ที่ระบุเป็นรูปแบบเลขฐานสิบหกโดยหารทุก ๆ อักขระสองตัว
* ตัวอย่างเช่น: "2B44EFD9" --> ไบต์[]{0x2B, 0x44, 0xEF, 0xD9}
* @param src สตริง
* @return ไบต์[]
-
ไบต์สาธารณะแบบคงที่ [] HexString2Bytes (String src) {
ไบต์ [] ret = ไบต์ใหม่ [8];
ไบต์[] tmp = src.getBytes();
สำหรับ(int i=0; i<8; i++){
ret[i] = uniteBytes(tmp[i*2], tmp[i*2+1]);
-
กลับมาอีกครั้ง;
-
-