如何将打印到文件的数组的奇怪输出转换为其原始值?



我有一个字符数组,它在文件中写入而不进行任何转换。打印到我的文件的值是[C@252ccf04现在我正在读取文件,这个东西被读取为字符串。现在检索到的数据是[C@252ccf04],但这次是字符串。我的问题是我想把它分配给另一个字符数组,这样我就可以使用arrays。tostring()方法读取它,以达到原始值123456,我怎么能做到这一点?

char[] pass = (data.substring(data.lastIndexOf(',') + 1).replaceAll(" ", "")).toCharArray();
System.out.println(Arrays.toString(pass));
// now the is: [[, C, @, 2, 5, 2, c, c, f, 0, 4]

我还想知道这个值是什么我应该怎么称呼它,这是一个哈希码吗?

值是哈希码(十六进制)加上类的名称。根据默认的toString()实现:

public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

不能将其转换回原始字符数组。当对象在内存中活动时,哈希码标识该对象。一旦程序结束,对象死亡,您就无法从哈希码中取回它。

您应该将实际数据保存为String,或者自己加密。

最新更新