Base64.encode(bytearray,Base64.DEFAULT)此方法的结果将在最后一项添加10

时间:2013-08-21 06:45:28

标签: java android

当我使用Base64.encode(bytearray,Base64.DEFAULT)对我的字节数组进行编码时,这个方法的结果将在结果字节数组的最后一项中添加10,当我将此结果字节数组转换为字符串而不是10时将转换最后进入\ n(换行) 请告诉我为什么\ n会在最后追加

下面是将字符串转换为字节数组的代码

    int inLength = hexValue.length();
    int i, o = 0;
    long outByte = 0;
    byte[] outBytes = new byte[(inLength / 2)];

    for (i = 0; i < inLength; i++) {
        char c = hexValue.charAt(i);
        int value = -1;

        if (c >= '0' && c <= '9')
            value = (c - '0');
        else if (c >= 'A' && c <= 'F')
            value = 10 + (c - 'A');
        else if (c >= 'a' && c <= 'f')
            value = 10 + (c - 'a');

        if (value >= 0) {
            if (i % 2 == 1) {
                outBytes[o++] = (byte) ((outByte << 4) | value);
                outByte = 0;
            } else {
                outByte = value;
            }

        } else {
            if (o != 0)
                break;
        }
    }
    return outBytes;

1 个答案:

答案 0 :(得分:0)

我现在不能发表评论所以我不得不回复。 这段代码是你写的吗?还是其他人?

对于Base64编码,一次以3个字节的块处理字节。如果数组的长度不是3的倍数,则附加一个或两个'0'零字节以形成完整的块。

为什么要编写自己的逻辑,哪些API可用于为您完成工作?

更新:我只是在API的帮助下再次运行代码。

Input String: 51b034267f00000144495444

Corresponding Base64 encoded String: NTFiMDM0MjY3ZjAwMDAwMTQ0NDk1NDQ0

简单地说,3个字节将产生4个纯文本编码字节。