这是一个非常奇怪的问题(至少对我而言),但我在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();
答案 0 :(得分:1)
假设第一个文件包含一个字节0x00。
该字节的Base-64编码将是String
,"AA=="
。
当你在该字符串上调用getBytes()
时,你会得到0x41,0x41,0x3D,0x3D-字符串中每个字符的一个字节。
这些是写入第二个文件的字节。