gpt4 book ai didi

java - Base64 是确定性的(Apache Commons lib 或其他)吗?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:47:56 25 4
gpt4 key购买 nike

我使用的是 Apache Commons 库中的 Base64 编码器。现在要么我的运行时/IDE 发生了一些有趣的事情,要么他们对 Base64 编码(或 Base64 作为规范)的实现是不确定的:

val test = Base64.encodeBase64("hello".getBytes).toString
val test2 = Base64.encodeBase64("hello".getBytes).toString
val test3 = Base64.encodeBase64("hello".getBytes).toString

以上每一种都会产生不同的结果。这是预期的吗?我正在用 Scala 编写这个...

最佳答案

您发布的 Scala 代码的等效 Java 代码将是:

String test = Base64.encodeBase64("hello".getBytes()).toString();
String test2 = Base64.encodeBase64("hello".getBytes()).toString();
String test3 = Base64.encodeBase64("hello".getBytes()).toString();

这将打印 toString()byte[]每个 Base64.encodeBase64("hello".getBytes()) 的数组对象这将是不同的对象,因此到控制台的输出也不同。它执行 toString() Object的方法|类,根据 Javadocs 说:

返回对象的字符串表示形式。

类 Object 的 toString 方法返回一个字符串,该字符串由对象是其实例的类的名称、at 符号字符“@”和哈希码的无符号十六进制表示形式组成对象。

得到正确的String表示,使用 Arrays.toString()方法。打印正确结果的示例 Java 代码如下:

String test = Arrays.toString(Base64.encodeBase64("hello".getBytes()));
String test2 = Arrays.toString(Base64.encodeBase64("hello".getBytes()));
String test3 = Arrays.toString(Base64.encodeBase64("hello".getBytes()));

关于java - Base64 是确定性的(Apache Commons lib 或其他)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16752807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com