Java android.util.Base64编码字符串太短

Java android.util.Base64编码字符串太短,java,android,base64,encode,Java,Android,Base64,Encode,我正在使用android.util.Base64,希望将位图编码为Base64字符串,但它总是太短。例如,一个在线工具说,它的长度无效,与有效长度相比,它肯定太短了 这是我的代码: ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] b = baos.toByteArray();

我正在使用android.util.Base64,希望将位图编码为Base64字符串,但它总是太短。例如,一个在线工具说,它的长度无效,与有效长度相比,它肯定太短了

这是我的代码:

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    byte[] b = baos.toByteArray();

    String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
以下是不同长度字符串的示例:


您的代码看起来不错,但您可以使用以下代码进行验证:

byte[] b2 = Base64.decode(encodedImage, Base64.DEFAULT);
boolean equals = Arrays.equals(b, b2);
如果两个数组的内容相等,那么问题不在Base64上,而是在使用
encodedImage
字符串的方式上。请记住,LogCat之类的东西可能会截断超过某个长度的字符串,因此请确保打印出
encodedImage
字符串的长度,并将其与已有的Base64进行比较

此外,Base64编码字符串比原始字符串长4/3(133%),因此,如果ByteArrayOutputStream的长度为9000,则Base64字符串的长度预计为12000