簡體   English   中英

Java-byte []到String到byte []的轉換錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM