要將十六進制表示的Unicode編碼"53C2657095198BEF"轉換爲Unicode字符,需要將其分割成四個編碼,每個編碼爲四個十六進制數字。然後,將每個編碼轉換爲對應的Unicode字符,並將它們合併爲一個字符串。以下是一個Java示例代碼:
String hexStr = "53C2657095198BEF";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hexStr.length(); i += 4) {
// 將每個四位十六進制編碼轉換爲對應的Unicode字符
char c = (char) Integer.parseInt(hexStr.substring(i, i + 4), 16);
sb.append(c);
}
String unicodeStr = sb.toString();
System.out.println(unicodeStr);
這將輸出:"參數錯誤",即爲Unicode編碼對應的中文字符串。
如果接收到的16進制Unicode編碼是:C25370651995EF8B 低位在前高位在後 需要 對十六進制字符串高低位轉換
/**
* Java 十六進制表示的 Unicode 編碼轉換爲字符串
* @param hexString
* @param reverse 高低位轉換
* @return
*/
public static String hexToUnicode(String hexString, boolean reverse) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hexString.length(); i += 4) {
String hexCode = hexString.substring(i, i + 4);
if (reverse){
hexCode = reverseHex(hexCode);
}
char c = (char) Integer.parseInt(hexCode, 16);
sb.append(c);
}
return sb.toString();
}
/**
* java十六進制字符串高低位轉換,如“1A2B”轉“2B1A”。
*
* @param hexString
* @return
*/
public static String reverseHex(String hexString) {
char[] charArray = hexString.toCharArray();
int length = charArray.length;
int times = length / 2;
for (int c1i = 0; c1i < times; c1i += 2) {
int c2i = c1i + 1;
char c1 = charArray[c1i];
char c2 = charArray[c2i];
int c3i = length - c1i - 2;
int c4i = length - c1i - 1;
charArray[c1i] = charArray[c3i];
charArray[c2i] = charArray[c4i];
charArray[c3i] = c1;
charArray[c4i] = c2;
}
return new String(charArray);
}
String hexStr ="C25370651995EF8B0000";
System.out.println(hexToUnicode(hexStr,true));
hexStr ="53C2657095198BEF";
System.out.println(hexToUnicode(hexStr,false));
這將輸出:"參數錯誤",即爲Unicode編碼對應的中文字符串。