有没有更优雅的方法从 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];
}
有没有更优雅的方法从 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];
}