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



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

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

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

在Java中做这件事的惯用方法是什么?

我能想到的最简洁的形式是:

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

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

最新更新