有没有更优雅的方法从 ByteBuffer 中读取四个字节并将每个字节视为一个 char

Is there a more elegant way to read four bytes from a ByteBuffer and treat each byte as a char

有没有更优雅的方法从 ByteBuffer 中读取四个字节并将每个字节视为一个字符(而不是将每一对都视为一个字符),我相信一定有更简洁的方法。

public static String read4Chars(ByteBuffer bytes) throws IOException
    {
        StringBuffer sbuf = new StringBuffer(4);
        for (int i = 0; i < 4; i++) {
            char ch = (char) bytes.get();
            sbuf.append(ch);
        }
        return sbuf.toString();
    }

优雅是相当主观的。你可以试试:

public static String read4Chars(ByteBuffer bytes) throws IOException {
    byte[] b = new byte[4];
    bytes.get(b);
    return new String(b, Charset.forName("ASCII"));
}

如果您不必 "consume" 缓冲区中的字节,您可以尝试:

public static String read4Chars(ByteBuffer bytes) throws IOException {
    byte[] array = bytes.array();
    return String.valueOf((char) array[0])
        + (char) array[0] + (char) array[0] + (char) array[0];
}