keHexString
public static String toHexString(int i) mengembalikan representasi string dari parameter integer dalam bentuk integer heksadesimal yang tidak ditandatangani.
Jika argumennya negatif, nilai bilangan bulat yang tidak ditandatangani adalah argumennya ditambah 232; Mengonversi nilai menjadi string numerik ASCII heksadesimal (basis 16) tanpa angka nol di depannya. Jika nilai ukuran unsigned adalah nol, maka diwakili oleh karakter nol '0' ('/u0030'); jika tidak, karakter pertama dalam representasi ukuran unsigned tidak akan menjadi karakter nol. Gunakan karakter berikut sebagai angka heksadesimal:
0123456789abcdef
Karakter ini berkisar dari '/u0030' hingga '/u0039' dan dari '/u0061' hingga '/u0066'. Jika Anda ingin huruf besar, Anda dapat memanggil metode String.toUpperCase() pada hasilnya:
Integer.toHexString(n).toUpperCase()
parameter:
i - bilangan bulat yang akan diubah menjadi string.
kembali:
Representasi string dari nilai bilangan bulat tak bertanda yang dinyatakan dalam argumen heksadesimal (basis 16).
//Mengonversi string menjadi pengkodean heksadesimal
String statis publik toHexString(String s)
{
Tali str="";
untuk (int i=0;i<s.panjang();i++)
{
int ch = (int)s.charAt(i);
String s4 = Integer.toHexString(ch);
str = str + s4;
}
kembalikan str;
}
// Ubah pengkodean heksadesimal menjadi string
String statis publik toStringHex(String s)
{
byte[] baKeyword = byte baru[s.length()/2];
for(int i = 0; i < baKeyword.panjang; i++)
{
mencoba
{
baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));
}
menangkap (Pengecualian e)
{
e.printStackTrace();
}
}
mencoba
{
s = String baru(baKeyword, "utf-8");//UTF-16le:Tidak
}
tangkapan (Pengecualian e1)
{
e1.printStackTrace();
}
kembali;
}
// Ubah pengkodean heksadesimal menjadi string
String statis publik toStringHex(String s)
{
byte[] baKeyword = byte baru[s.length()/2];
for(int i = 0; i < baKeyword.panjang; i++)
{
mencoba
{
baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));
}
menangkap (Pengecualian e)
{
e.printStackTrace();
}
}
mencoba
{
s = String baru(baKeyword, "utf-8");//UTF-16le:Tidak
}
tangkapan (Pengecualian e1)
{
e1.printStackTrace();
}
kembali;
}
public static void main(String[] args) {
System.out.println(encode("中文"));
System.out.println(decode(encode("中文")));
}
/*
* Kumpulan karakter numerik heksadesimal
*/
String statis pribadi hexString="0123456789ABCDEF";
/*
* Enkode string menjadi angka heksadesimal, cocok untuk semua karakter (termasuk bahasa Mandarin)
*/
pengkodean String statis publik (String str)
{
//Dapatkan array byte berdasarkan pengkodean default
byte[] byte=str.getBytes();
StringBuilder sb=StringBuilder baru(byte.panjang*2);
//Dekomposisi setiap byte dalam array byte menjadi bilangan bulat heksadesimal 2 digit
for(int i=0;i<byte.panjang;i++)
{
sb.append(hexString.charAt((byte[i]&0xf0)>>4));
sb.append(hexString.charAt((byte[i]&0x0f)>>0));
}
kembali sb.toString();
}
/*
* Dekode angka heksadesimal menjadi string, berlaku untuk semua karakter (termasuk bahasa Mandarin)
*/
dekode String statis publik (String byte)
{
ByteArrayOutputStream baos=ByteArrayOutputStream baru(bytes.length()/2);
//Kumpulkan setiap bilangan bulat heksadesimal 2 digit menjadi satu byte
for(int i=0;i<byte.panjang();i+=2)
baos.write((hexString.indexOf(bytes.charAt(i))<<4 |hexString.indexOf(bytes.charAt(i+1))));
kembalikan String baru(baos.toByteArray());
}
Metode kedua:
Cetak array byte yang ditentukan ke konsol dalam bentuk heksadesimal
kelas publik Gunakan {
Utilitas publik() {
}
/**
* Cetak array byte yang ditentukan ke konsol dalam bentuk heksadesimal
* @param petunjuk String
* @param b byte[]
* @pengembalian batal
*/
public static void printHexString(Petunjuk string, byte[] b) {
System.out.print(petunjuk);
for (int i = 0; i < b.panjang; i++) {
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.panjang() == 1) {
heksa = '0' + heksa;
}
Sistem.keluar.cetak(hex.toUpperCase() + " ");
}
Sistem.keluar.println("");
}
/**
*
* @param b byte[]
* @pengembalian String
*/
String statis publik Bytes2HexString(byte[] b) {
String ret = "";
for (int i = 0; i < b.panjang; i++) {
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.panjang() == 1) {
heksa = '0' + heksa;
}
ret += hex.toUpperCase();
}
kembali mundur;
}
/**
* Gabungkan dua karakter ASCII menjadi satu byte;
* Seperti: "EF"--> 0xEF
* @param src0 byte
* @param src1 byte
* @mengembalikan byte
*/
byte statis publik uniteBytes(byte src0, byte src1) {
byte _b0 = Byte.decode("0x" + String baru(byte baru[]{src0})).byteValue();
_b0 = (bita)(_b0 << 4);
byte _b1 = Byte.decode("0x" + String baru(byte baru[]{src1})).byteValue();
byte ret = (byte)(_b0 ^ _b1);
kembali mundur;
}
/**
* Ubah string src yang ditentukan menjadi bentuk heksadesimal dengan membagi setiap dua karakter
* Misalnya: "2B44EFD9" --> byte[]{0x2B, 0x44, 0xEF, 0xD9}
* @param src String
* @mengembalikan byte[]
*/
byte statis publik[] HexString2Bytes(String src){
byte[] ret = byte baru[8];
byte[] tmp = src.getBytes();
untuk(int i=0; i<8; i++){
ret[i] = uniteBytes(tmp[i*2], tmp[i*2+1]);
}
kembali mundur;
}
}