Base64encoding/decoding后的值不一样

Value after Base64 encoding/decoding are not the same

我需要 encode/decode 我的数据在存储到数据库之前,但我有一个奇怪的问题,解码后,值与第一个不一样 例如看看这段代码为什么 seedBytes1 和 seedBytes2 不一样? (我试过 encodedSeedBytes.getBytes("US-ASCII") 而不是 encodedSeedBytes 但没有成功)

seedBytes = new SecureRandom().generateSeed(16);
Log.i("LOG", "seedBytes1: " + seedBytes.toString()); // Before encoding
encodedSeedBytes = Base64.encodeToString(seedBytes, Base64.DEFAULT);
decodedSeedBytes = Base64.decode(encodedSeedBytes, Base64.DEFAULT);
Log.i("LOG", "seedBytes2: " + decodedSeedBytes.toString()); // After decoding

结果:(为什么这2个值不一样?)

I/LOG﹕ seedBytes1: [B@41764070
I/LOG﹕ seedBytes2: [B@41765bf0

这是对 JVM 内存中对象位置的引用,而不是种子本身的值。

According to the documentation generateSeed() returns 一个字节[].

您正在一个字节数组上调用 toString(),它只是 returns 它在内存中的位置。

要将字节[]转换为字符串,您可以使用

String s = new String(seedBytes);