gpt4 book ai didi

java - 有效地将 Java 字符串转换为表示 C 字符串的以 null 结尾的 byte[]? (ASCII)

转载 作者:搜寻专家 更新时间:2023-11-01 04:03:00 24 4
gpt4 key购买 nike

我想将 Java String str 转换为具有以下特征的 byte[] b:

  • b 是一个有效的 C 字符串(ie 它有 b.length = str.length() + 1b [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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com