-2

当我使用 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;
4

1 回答 1

0

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

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

为什么要编写自己的逻辑,并且有一些 API 可以为您完成工作?

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

Input String: 51b034267f00000144495444

Corresponding Base64 encoded String: NTFiMDM0MjY3ZjAwMDAwMTQ0NDk1NDQ0

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

于 2013-08-21T09:06:33.290 回答