[英]Java - byte[] to String to byte[] conversion error
嘗試從byte []類型的數組構造一個String,然后使用String.getBytes()轉換回byte []數組時,會修改某些字節值。 下面是一段代碼,重現了我的問題:
public static void main(String[] args)
{
byte[] arr = new byte[] { (byte)0xff, 0x5e};
String str = new String(arr);
byte[] arr2 = str.getBytes();
for(int i = 0; i < 2; i++)
System.out.print(String.format("%02X ", arr2[i]));
for(int i = 0; i < 2; i++)
System.out.print(String.format("%02X ", arr[i]));
}
輸出如下:
3F 5E FF 5E
我嘗試了所有標准字符集的轉換,但結果是相同的。 由於某種原因,我無法弄清楚,0xFF變為0x3F ...為什么,如何解決這個問題?
經過一些有用的回答后,這就是我的工作方式:
public static void main(String[] args)
{
byte[] arr = new byte[] { (byte)0xff, 0x5e};
String str = new String(arr, Charset.forName("ISO-8859-1"));
byte[] arr2 = str.getBytes(Charset.forName("ISO-8859-1"));
for(int i = 0; i < 2; i++)
System.out.print(String.format("%02X ", arr2[i]));
for(int i = 0; i < 2; i++)
System.out.print(String.format("%02X ", arr[i]));
}
上面使用的字符集使我可以使用任何值的字節而無需轉換它們,這對於處理二進制數據很有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.