小编Eri*_*son的帖子

Java 8 Base64 Encode(Basic)不再添加新行.我该如何重新实现呢?

我基本上有完全相反的问题

新行追加上,我的加密字符串

似乎旧的Java Base64实用程序在返回字符串时总是每76个字符添加新行,但使用以下代码,我不会得到我需要的那些中断.

    Path path = Paths.get(file);
    byte[] data = Files.readAllBytes(path);
    String txt= Base64.getEncoder().encodeToString(data);
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以告诉编码器添加换行符?

我已经尝试实现一个stringbuilder来插入换行符,但它最终改变了整个输出(我将文本从java控制台复制到HxD编辑器,并与我已知的工作'BLOB'与换行符进行比较).

    String txt= Base64.getEncoder().encodeToString(data);

    //Byte code for newline
    byte b1 = 0x0D;
    byte b2 = 0x0A;     

    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < txt.length(); i++) {
        if (i > 0 && (i % 76 == 0)) {
            sb.append((char)b1);
            sb.append((char)b2);

        }

        sb.append(txt.charAt(i));
    }
Run Code Online (Sandbox Code Playgroud)

编辑(回答问题):

这不是最简单的解释,但是当我不使用字符串构建器时,编码的输出将如下所示:

AAAAPAog4lBVgGJrT2b + mQVicHN3d //////// 3hhcDJiLWVtMjUwLWVtMjUwLWRldjA0NTUAAAAAAA

但我希望它看起来像这样:

AAAAPAog4lBVgGJrT2b + mQVicHN3d //////// 3hhcDJiLWVtMjUwLWVtMjUwLWRldjA0NTUAAAAA..AA

如您所见,".."表示0x0D和0X0A或换行符,它在第76个字符处插入(这是旧base64输出的内容).

但是,当我在第76个字符后追加字节b1和b2(换行符)时,输出变为: …

java stringbuilder base64 blob

0
推荐指数
1
解决办法
2039
查看次数

标签 统计

base64 ×1

blob ×1

java ×1

stringbuilder ×1