正确解码字节数组到char数组

时间:2013-10-14 20:33:43

标签: java decoding

通过消除字符串中的存储(最终在堆上)来使密码处理更安全。我有以下现有代码:

String pw = new String(buffer, 0, len, "UTF-32LE");

我想出了:

Charset charSet = Charset.forName("UTF-32LE");
ByteBuffer byteBuffer = ByteBuffer.wrap(buffer, 0, len);
CharBuffer charBuffer = charSet.decode(byteBuffer);
charArray = new char[charBuffer.length()];
for (int i = 0; i < charBuffer.length(); ++i)
{
    charArray[i] = charBuffer.charAt(i);
}

请注意,我们支持许多不同的语言,所以我不太确定如何最好地彻底测试这种方法。

  1. 这是对的吗?这种方法有什么警告吗?
  2. 这是最好的方法还是我错过了更简单的东西?
  3. 感谢您的任何反馈或建议。

1 个答案:

答案 0 :(得分:1)

我不确定你想要实现什么目标。起初我以为你想要摆脱存储在堆上的数据,但后来我看到了一系列字符。在java中,每个数组都是一个对象,每个对象都存储在堆上。引用变量可以落在堆栈上,但它们只是处理程序而不是对象本身。