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

时间:2015-02-07 23:19:00

标签: java android base64 encode

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

这是我的代码:

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

    String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);

以下是不同字符串长度的示例:

My string

valid string

1 个答案:

答案 0 :(得分:0)

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

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。