java - Android 中获取 UTF-16 字节数组最有效的 getBytes 是哪个

标签 java android unicode java-native-interface utf-16

因此,Android 字符串在内部存储为 UTF-16。我不知道内部使用的是 Big Endian 还是 Little Endian。

如果我调用 getBytes("UTF"),我会返回一个带有 BOM 的 BE 字节数组。这是否意味着这也是字符串内部存储的方式?

我有一个 C API,需要使用 UTF-16 字符的字节缓冲区来调用。如果需要,我可以调整 C API 来管理字节顺序。

我想要避免的是在 Java 级别进行数组复制(如果不需要只是为了管理字节序)。为此,我需要知道字符串内部是以大端还是小端存储。如果字符串内部存储在 Little Endian 中,我更喜欢只调用 getBytes("UTF16-LE") 并将其作为 Little Endian 直接传递给 native 代码。

那么有人知道 Android 在幕后使用什么以及对 getBytes(...) 的什么调用是最有效的吗?

最佳答案

您可以查看 ByteOrder.nativeOrder() 返回的值。 jdk javadoc暗示使用 native 字节序可以提高性能。但在仓促下结论之前,您或许应该检查一下对 Android 的影响。

关于java - Android 中获取 UTF-16 字节数组最有效的 getBytes 是哪个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21741826/

相关文章:

unicode - 在 vbscript 文件中输入双字节字符

java - 如何在Java中使用反射(不使用抽象处理器或APT)处理源级注释?

java - java中子类的实例化

java - 将 int 转换为带有额外内容的 32 位二进制行

java - Android listview排序使用xml解析

c# - ASCIIEncoding.ASCII.GetBytes() 返回意外值

java - 创建一个数组,其中包含一定范围内的随机值

android - getmeasuredheight() 和 getmeasuredwidth() 在 View.measure() 之后返回 0

android - 如何防止使用社交媒体登录多个帐户?

python - 返回 Unicode 字符串与返回编码为 UTF-8 的普通字符串?