【发布时间】:2022-02-20 14:20:45
【问题描述】:
我有以下问题: 在 java 程序中,我将字符串编码为 base64 格式:
package my;
import java.util.Base64;
public class base64 {
public static void main(String[] args) {
// check for an input
if(args.length > 0)
{
Base64.Encoder encoder = java.util.Base64.getEncoder();
for(int i = 0; i< args.length; ++i)
{
String encoded = encoder.encodeToString(args[i].getBytes());
System.out.println(encoded);
}
}
}
}
字符串...
firstname lastname<$!$>email@domain.tld<$!$>message
... 结果:
Zmlyc3RuYW1lIGxhc3RuYW1lPCQhJD5lbWFpbEBkb21haW4udGxkPCQhJD5tZXNzYWdl
这似乎工作正常。但是,如果我想使用以下程序将这个 base64 字符串解码回 GNU Octave 中的普通字符串:
b64encoded = "Zmlyc3RuYW1lIGxhc3RuYW1lPCQhJD5lbWFpbEBkb21haW4udGxkPCQhJD5tZXNzYWdl";
decoded = base64_decode(b64encoded);
%output the type and the string
disp(typeinfo(decoded));
disp(["decoded : " decoded]);
...我每次都会收到以下错误消息之一。
error: base64_decode: incorrect input size
或
error: base64_decode: input was not valid base64
由于这不起作用,我尝试使用 Octave 对给定字符串进行编码,但这不起作用,因为我不明白如何将字符串转换为 base64_encode 想要作为输入的数组类型。之后我用谷歌搜索了 2 天,阅读了很多帖子、文档,还试图了解 Octaves base64_encode 和 base64_decode 的底层 c 实现,但这也对我没有帮助。
所以我的主要问题是:
- 我在使用 octaves 解码功能时犯了什么错误?
- 如何将 anoctave 字符串编码为 base64?
提前致谢,
nierd
【问题讨论】:
-
Java base64 编码器的结果很好,你可以在base64decode.org(和base64encode.org)上查看所以你的问题真的不是关于Java,而只是关于Gnu Octave