Rumah > Artikel > tutorial komputer > Bagaimana untuk menukar heksadesimal kepada rentetan menggunakan JAVA? bersyukur!
String hexString statik peribadi = "0123456789ABCDEF";
utama kekosongan statik awam(String[] args) {
System.out.println(encode("中文"));
System.out.println(decode(encode("中文")));
}
/*
* Kod rentetan ke dalam nombor perenambelasan, sesuai untuk semua aksara (termasuk bahasa Cina)
*/
enkod String statik awam(String str) {
// Dapatkan tatasusunan bait mengikut pengekodan lalai
bait[] bait = str.getBytes();
StringBuilder sb = StringBuilder baharu(bait.panjang * 2);
// Uraikan setiap bait dalam tatasusunan bait menjadi integer heksadesimal 2 digit
untuk (int i = 0; i
sb.append(hexString.charAt((bait[i] & 0xf0) >> 4));
sb.append(hexString.charAt((bait[i] & 0x0f) >> 0));
}
kembali sb.toString();
}
/*
* Nyahkod nombor perenambelasan kepada rentetan, sesuai untuk semua aksara (termasuk bahasa Cina)
*/
menyahkod rentetan statik awam(bait rentetan) {
ByteArrayOutputStream baos = ByteArrayOutputStream(bait.length() / 2);
// Himpunkan setiap 2 digit integer heksadesimal menjadi satu bait
untuk (int i = 0; i
baos.write((hexString.indexOf(bytes.charAt(i)))
.indexOf(bytes.charAt(i + 1))));
kembalikan String baharu(baos.toByteArray());
}
Ujian peribadi boleh dilaksanakan dan menyokong bahasa Cina! ! ! Sila ingat untuk mengamalkannya jika ia berguna
Gunakan kaedah ini untuk menukar rentetan nombor perenambelasan yang dihantar ke rentetan dalam format UTF-8
String statik awam keStringHex1(String s) {
bait[] baKata kunci = bait baharu[s.length() / 2];
untuk (int i = 0; i
cuba {
baKeyword[i] = (bait) (0xff & Integer.parseInt(s.substring(
)i * 2, i * 2 + 2), 16));
} tangkapan (Pengecualian e) {
e.printStackTrace();
}
}
cuba {
s = String baharu(baKeyword, "utf-8");// UTF-16le:Not
} tangkapan (Pengecualian e1) {
e1.printStackTrace();
}
kembali s;
}
Saya rasa masalah anda hanyalah menukar nombor kepada aksara, bukan? Saya tidak akan membantu anda membuat kod sumber berbilang baris bagi teks penuh yang saya buat satu baris penukaran Anda boleh menyarangkan satu gelung di lapisan luar gunakan Tatasusunan 2D untuk mencapai penukaran kod ASCII berbilang baris bagi teks penuh:
#include "Stdio.h"
#include "Conio.h"
int utama(kosong)
{
nombor int[10],i=0;
while(getchar() != 'n')
{
getchar();
scanf("%x",&num[i]);
printf("%c", nombor[i]);
i++;
}
getch();
kembali 0;
}
Prinsipnya begini:
Format empat bait anda setiap kali adalah dalam bentuk xyy Saya hanya perlu membaca dalam nombor heksadesimal saya boleh menggunakan penyataan scanf("%x",&num[i]); nombor perenambelasan, semua nombor perenambelasan dalam satu baris dikeluarkan dalam gelung dan disimpan dalam tatasusunan satu dimensi.
Dari segi output, saya malas dan membacanya secara langsung dan mengeluarkannya Namun, ini bukan kuncinya untuk mengeluarkan pernyataan dengan printf("%c",num[i]); tukar heksadesimal Nombor sistem ditukar kepada aksara yang sepadan dengan kod dan output ascii.
Sekarang adakah anda faham? Ia menggunakan input dan output berformat untuk membaca nombor perenambelasan dan aksara output. (Dua getchar() digunakan untuk membaca aksara dan x masing-masing~~)
#Tukar aksara heksadesimal kepada aksara binari
def str2byte(s):
base='0123456789ABCDEF'
i=0
s = s.upper()
s1=''
sementara saya c1=s[i]
c2=s[i+1]
i+=2
b1=base.find(c1)
b2=base.find(c2)
jika b1 == -1 atau b2 == -1:
kembali Tiada
s1+=chr((b1 kembalikan s1
s = 'C7 EB CE F0 BE C6 BA F3 BC DD B3 B5'.ganti (' ', '') #Alih keluar ruang
s1 = str2bait
cetak s1.decode('gbk') #Decode dan output dengan pengekodan gbk
#hasil
>>>s1
'xc7xebxcexf0xbexc6xbaxf3xbcxddxb3xb5'
>>>cetak s1.decode('gbk')
Tolong jangan minum dan memandu
Atas ialah kandungan terperinci Bagaimana untuk menukar heksadesimal kepada rentetan menggunakan JAVA? bersyukur!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!