我想将每个 byte
从 byte[]
转换为 char
,然后将这些字符放入字符串中。这就是某些数据库的所谓“二进制”编码。到目前为止,我能找到的最好的是这个巨大的样板:
byte[] bytes = ...;
char[] chars = new char[bytes.length];
for (int i = 0; i < bytes.length; ++i) {
chars[i] = (char) (bytes[i] & 0xFF);
}
String s = new String(chars);
Java SE 或 Apache Commons 是否还有其他选择?我希望我能有这样的东西:
final Charset BINARY_CS = Charset.forName("BINARY");
String s = new String(bytes, BINARY_CS);
但我不愿意编写字符集及其编解码器(目前)。 JRE 或 Apache Commons 中有这样现成的二进制 Charset 吗?
最佳答案
您可以对 7 位字符使用 ASCII 编码
String s = "Hello World!";
byte[] b = s.getBytes("ASCII");
System.out.println(new String(b, "ASCII"));
或 8 位 ascii
String s = "Hello World! \u00ff";
byte[] b = s.getBytes("ISO-8859-1");
System.out.println(new String(b, "ISO-8859-1"));
编辑
System.out.println("ASCII => " + Charset.forName("ASCII"));
System.out.println("US-ASCII => " + Charset.forName("US-ASCII"));
System.out.println("ISO-8859-1 => " + Charset.forName("ISO-8859-1"));
打印
ASCII => US-ASCII
US-ASCII => US-ASCII
ISO-8859-1 => ISO-8859-1
关于java - 使用二进制编码将 byte[] 转换为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8419415/