不同编码的字节数

时间:2016-04-28 19:19:51

标签: java encoding

这是一个非常奇怪的问题(至少对我而言),但我在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();

1 个答案:

答案 0 :(得分:1)

假设第一个文件包含一个字节0x00。

该字节的Base-64编码将是String"AA=="

当你在该字符串上调用getBytes()时,你会得到0x41,0x41,0x3D,0x3D-字符串中每个字符的一个字节。

这些是写入第二个文件的字节。