我该如何从Java
ByteBuffer
中以NUL结尾的UTF-8字符串开始读取,读取位置为ByteBuffer#position()
?ByteBuffer b = /* 61 62 63 64 00 31 32 34 00 (hex) */;
String s0 = /* read first string */;
String s1 = /* read second string */;
// `s0` will now contain “ABCD” and `s1` will contain “124”.
我已经尝试使用Charsets.UTF_8.decode(b)
,但似乎该函数忽略了当前的ByteBuffer
位置并读取到缓冲区的末尾。
除了寻找包含0的字节并将缓冲区限制在其中(或将带有字符串的部分复制到单独的缓冲区中),是否有更惯用的方法从字节缓冲区中读取这样的字符串?
CharsetDecoder
... - Maarten Bodewes