我有这行代码。
String s = new String(m_buffer.array());
这里的buffer是一个ByteBuffer。
有没有一种方法可以将bytebuffer转换为字符串,而不需要分配新的String和/或涉及字符数组复制?(也就是说,有没有一种方式可以安全地将String的char []值指向ByteBuffer的byte [] hb?)
谢谢
String s = new String(m_buffer.array());
这里的buffer是一个ByteBuffer。
有没有一种方法可以将bytebuffer转换为字符串,而不需要分配新的String和/或涉及字符数组复制?(也就是说,有没有一种方式可以安全地将String的char []值指向ByteBuffer的byte [] hb?)
谢谢
Charset charset = Charset.forName("ISO-8859-1");
ByteBuffer m_buffer = ...;
String text = charset.decode(m_buffer).toString();
Java中的String
类是不可变的。为了保持这个保证,String
必须拥有自己的char[]
引用,而其他人不能拥有该引用。如果它与ByteBuffer
共享数组,则String
类无法保证它不会被修改。此外,在Java中,char
和byte
并不相同。
byte[]
不是char[]
。其次,不应该这样做。你应该更担心的是在未指定编码的情况下从字节创建字符串,这很容易导致代码出错,尤其是当默认编码改变时。 - Kayaman