private static String hexString = "0123456789ABCDEF";
public static void main(String[] args) {
System.out.println(encode("中文"));
System.out.println(decode(encode("中文")));
}
/*
* Codieren Sie Zeichenfolgen in Hexadezimalzahlen, die für alle Zeichen (einschließlich Chinesisch) geeignet sind
*/
public static String encode(String str) {
// Holen Sie sich das Byte-Array gemäß der Standardcodierung
byte[] bytes = str.getBytes();
StringBuilder sb = new StringBuilder(bytes.length * 2);
// Zerlege jedes Byte im Byte-Array in eine zweistellige hexadezimale Ganzzahl
for (int i = 0; i
sb.append(hexString.charAt((bytes[i] & 0xf0) >> 4));
sb.append(hexString.charAt((bytes[i] & 0x0f) >> 0));
}
return sb.toString();
}
/*
* Dekodieren Sie Hexadezimalzahlen in Zeichenfolgen, die für alle Zeichen (einschließlich Chinesisch) geeignet sind
*/
öffentliche statische String-Dekodierung (String-Bytes) {
ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length() / 2);
// Füge jede zweistellige hexadezimale Ganzzahl zu einem Byte zusammen
for (int i = 0; i
baos.write((hexString.indexOf(bytes.charAt(i))
.indexOf(bytes.charAt(i + 1))));
return new String(baos.toByteArray());
}
Persönliche Tests sind machbar und unterstützen Chinesisch! ! ! Bitte denken Sie daran, es zu übernehmen, wenn es nützlich ist
Verwenden Sie diese Methode, um die übergebene Zeichenfolge aus Hexadezimalzahlen in eine Zeichenfolge im UTF-8-Format umzuwandeln
public static String toStringHex1(String s) {
byte[] baKeyword = neues Byte[s.length() / 2];
for (int i = 0; i
versuchen {
baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(
i * 2, i * 2 + 2), 16));
} Fang (Ausnahme e) {
e.printStackTrace();
}
}
versuchen {
s = new String(baKeyword, "utf-8");// UTF-16le:Not
} Fang (Ausnahme e1) {
e1.printStackTrace();
}
return s;
}
Ich denke, Ihr Problem besteht nur darin, Zahlen in Zeichen umzuwandeln, oder? Dann werde ich Ihnen nicht helfen, den mehrzeiligen Volltext-Quellcode zu erstellen. Sie können eine Schleife in der äußeren Ebene verschachteln und 2D verwenden Array zur Erzielung einer mehrzeiligen ASCII-Code-Konvertierung des Volltextes:
#include "Stdio.h"
#include "Conio.h"
int main(void)
{
int num[10],i=0;
while(getchar() != 'n')
{
getchar();
scanf("%x",&num[i]);
printf("%c",num[i]);
i++;
}
getch();
return 0;
}
Das Prinzip ist folgendes:
Das Format Ihrer vier Bytes hat jeweils die Form xyy. Zum Einlesen kann ich die Anweisung scanf("%x",&num[i]); verwenden Hexadezimalzahlen: Alle Hexadezimalzahlen in einer Zeile werden in einer Schleife herausgenommen und in einem eindimensionalen Array gespeichert.
In Bezug auf die Ausgabe war ich faul und habe es direkt gelesen und ausgegeben. Der Schlüssel besteht darin, die Anweisung automatisch mit printf("%c",num[i]) auszugeben Konvertieren Sie die Hexadezimalzahl. Die Systemnummern werden in Zeichen umgewandelt, die dem ASCII-Code entsprechen, und ausgegeben.
Verstehen Sie jetzt? Es verwendet formatierte Eingaben und Ausgaben, um Hexadezimalzahlen zu lesen und Zeichen auszugeben. (Die beiden getchar() werden zum Lesen von Zeichen bzw. x verwendet~~)
#Hexadezimale Zeichen in Binärzeichen umwandeln
def str2byte(s):
base='0123456789ABCDEF'
i=0
s = s.upper()
s1=''
während i c1=s[i]
c2=s[i+1]
i+=2
b1=base.find(c1)
b2=base.find(c2)
wenn b1 == -1 oder b2 == -1:
Rückgabe Keine
s1+=chr((b1 gibt s1 zurück
s = 'C7 EB CE F0 BE C6 BA F3 BC DD B3 B5'.replace ('', '') #Leerzeichen entfernen
s1 = str2byte(s)
print s1.decode('gbk') #Dekodieren und mit GBK-Kodierung ausgeben
#Ergebnisse
>>>s1
'xc7xebxcexf0xbexc6xbaxf3xbcxddxb3xb5'
>>>s1.decode('gbk') drucken
Bitte nicht trinken und Auto fahren
Das obige ist der detaillierte Inhalt vonWie konvertiert man mit JAVA Hexadezimalzahlen in Zeichenfolgen? dankbar!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!