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