我需要在存储到数据库之前对我的数据进行编码/解码,但我有奇怪的问题,解码后,值与第一次不一样 例如,看看这个代码为什么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
结果:(为什么这两个值不相同?)
I/LOG﹕ seedBytes1: [B@41764070
I/LOG﹕ seedBytes2: [B@41765bf0
答案 0 :(得分:2)
这是对JVM内存中对象位置的引用,而不是种子本身的值。
According to the documentation generateSeed()返回Byte []。
你在一个字节数组上调用toString(),只返回它在内存中的位置。
要将byte []转换为字符串,您可以使用
String s = new String(seedBytes);