我想将 Java String str
转换为具有以下特征的 byte[] b
:
b
是一个有效的 C 字符串(ie 它有b.length = str.length() + 1
和b [str.length()] == 0
.b
中的字符是将str
中的字符转换为8位ASCII字符得到的。
最有效的方法是什么——最好是现有的库函数?遗憾的是,str.getBytes("ISO-8859-1")
不符合我的第一个要求...
最佳答案
// do this once to setup
CharsetEncoder enc = Charset.forName("ISO-8859-1").newEncoder();
// for each string
int len = str.length();
byte b[] = new byte[len + 1];
ByteBuffer bbuf = ByteBuffer.wrap(b);
enc.encode(CharBuffer.wrap(str), bbuf, true);
// you might want to ensure that bbuf.position() == len
b[len] = 0;
这需要分配几个包装器对象,但不会复制字符串字符两次。
关于java - 有效地将 Java 字符串转换为表示 C 字符串的以 null 结尾的 byte[]? (ASCII),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17737206/