【问题标题】:Convert a code point to UTF-8 byte array in Java在 Java 中将代码点转换为 UTF-8 字节数组
【发布时间】:2023-01-16 23:19:01
【问题描述】:

我需要将代码点(以整数形式提供)转换为 UTF-8 字节数组(可能表示为 ByteArrayOutputStream,除非有更有效的表示形式)。之前的一个问题询问如何通过将算法转换为手写代码来做到这一点,这当然是一种选择,但鉴于 Java 标准库已经有办法做到这一点,最佳实践是尝试使用标准库而不是复制功能。

我知道一种方法:StringBuilderappendCodePoint后跟toString将代码点转换为字符串,然后getBytes转换为字节数组,然后可以将其附加到字节输出流,最终收集到一个更大的复合字节数组中。

但是,感觉应该有一种更优雅、更高效的方法,涉及的步骤更少。

在 Java 中执行此操作的惯用方法是什么?

【问题讨论】:

    标签: java utf-8


    【解决方案1】:

    我能想到的最紧凑的形式是这样的:

    static byte[] utf8BytesForCodePoint(int codePoint) {
        return Character.toString(codePoint).getBytes(StandardCharsets.UTF_8);
    }
    

    这避免了使用 Character.toString(int codePoint) 创建 StringBuilder 的额外步骤。

    【讨论】:

      猜你喜欢
      • 2012-06-20
      • 2011-12-05
      • 2010-12-24
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      • 1970-01-01
      相关资源
      最近更新 更多