如何将ASCII字节[]转换为字符串?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (104)

我正在将包含ASCII字符的byte []传递给log4j,以将其记录到文件中。当我通过byt []时,它被当作一个对象来处理,而日志很没用。当我将它们转换为字符串时new String(byte[] data),我的应用程序的性能减半。

我怎样才能有效地传递它们?

提问于
用户回答回答于

延迟处理byte []数组,直到log4j记录消息。你可以:

final byte[] myArray = ...;
Logger.getLogger(MyClass.class).debug(new Object() {
    @Override public String toString() {
        return new String(myArray);
    }
});
用户回答回答于

ASCII是少数可以转换为/从UTF16编码的编码之一,无需算术或查表,因此可以手动转换:

String convert(byte[] data) {
    StringBuilder sb = new StringBuilder(data.length);
    for (int i = 0; i < data.length; ++ i) {
        if (data[i] < 0) throw new IllegalArgumentException();
        sb.append((char) data[i]);
    }
    return sb.toString();
}

所属标签

可能回答问题的人

  • 天使的炫翼

    15 粉丝531 提问35 回答
  • 旺仔小小鹿

    社区 · 运营 (已认证)

    48 粉丝0 提问27 回答
  • 富有想象力的人

    2 粉丝0 提问26 回答
  • 发条丶魔灵1

    6 粉丝525 提问25 回答

扫码关注云+社区

领取腾讯云代金券