在 Java 中将代码点转换为 UTF-8 字节数组

rwa*_*ace 3 java utf-8

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

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

不过,感觉应该有一种更优雅、更高效、步骤更少的方法。

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

Joa*_*uer 6

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

static byte[] utf8BytesForCodePoint(int codePoint) {
    return Character.toString(codePoint).getBytes(StandardCharsets.UTF_8);
}
Run Code Online (Sandbox Code Playgroud)

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