簡體   English   中英

不同編碼的字節

[英]Bytes in different encodings

這是一個非常奇怪的問題(至少對我而言),但是我發現Java編碼存在一些奇怪的行為。 例如,您有一些字節集。 然后,您以某種編碼方式將此字節解釋為字符串。 比得到此字符串的字節並將其保存到另一個文件。 我認為編碼只是將字節解釋為字符串的指定方式。 但是通過這種方式,兩個文件中的字節必須相同,但事實並非如此。

這是示例代碼實例:

    FileInputStream inputStream = new FileInputStream(new File("firstFile"));
    byte[] arr = new byte[50000];
    int l = inputStream.read(arr,0,50000);
    arr = Arrays.copyOfRange(arr,0, l);
    BASE64Encoder encoder = new BASE64Encoder();
    String st = encoder.encode(arr);

    FileOutputStream outputStream = new FileOutputStream(new File("secondFile"));
    outputStream.write(st.getBytes(), 0, st.getBytes().length);
    inputStream.close();
    outputStream.close();

假設第一個文件包含一個字節0x00。

該字節的Base-64編碼將為String "AA=="

在該字符串上調用getBytes()時,您將獲得0x41、0x41、0x3D,0x3D-字符串中每個字符一個字節。

這些是寫入第二個文件的字節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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