我需要将代码点(作为整数提供)转换为UTF-8字节数组(可能表示为ByteArrayOutputStream
,除非有更有效的表示)。前面的一个问题是如何通过将算法翻译成手写代码来实现这一点,这当然是一种选择,但是考虑到Java标准库已经有办法做到这一点,最佳实践将是尝试使用标准库而不是复制功能。
我知道一种方法:StringBuilder
appendCodePoint
跟着toString
将代码点转换为字符串,然后getBytes
转换为字节数组,然后可以附加到字节输出流,最终聚集成一个更大的复合字节数组。
然而,感觉应该有一种更优雅、更有效的方法,涉及更少的步骤。
在Java中做这件事的惯用方法是什么?
我能想到的最简洁的形式是:
static byte[] utf8BytesForCodePoint(int codePoint) {
return Character.toString(codePoint).getBytes(StandardCharsets.UTF_8);
}
这避免了使用Character.toString(int codePoint)
创建StringBuilder
的额外步骤。