[英]Hex-string to UTF-8-string in Java
我有一個十六進制數:35 d8 de de de de 43 f2 71 84 4b f3 be 4d 4d 65 4a 17 41 bb 40 a5 85 c4 bd fd 7a 4e fb 24 27 4e
這是 32 個字節!
我這樣做:
String b = "35d8dededede43f271844bf3be4d4d654a1741bb40a585c4bdfd7a4efb24274e";
byte[] bytes = fromHex(b);
String st = new String(bytes, StandardCharsets.UTF_8);
System.out.println(bytes.length); // 32
System.out.println(st.length()); // 30
private static byte[] fromHex(String hex)
{
byte[] binary = new byte[hex.length() / 2];
for(int i = 0; i < binary.length; i++)
{
binary[i] = (byte)Integer.parseInt(hex.substring(2*i, 2*i+2), 16);
}
return binary;
}
我得到了一個答案:
32
30
但我希望得到一個 32 個 UTF-8 字符串! 為什么我得到一個 30 個字符的字符串? 如何獲得 32 個 UTF-8 字節?
為什么我得到一個 30 個字符的字符串?
該字符串中有字節序列,因此當從 UTF-8 解碼時,多個字節被轉換為單個 Unicode 代碼點。
我怎樣才能得到 32 個 UTF-8 字節。
我們不能。 它是一個 30 個字符的 UTF-8 字符串?
無論如何說“UTF-8 字節”是錯誤的。 它們不再是字節了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.