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

时间:2014-02-12 23:05:01

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

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

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

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

我想避免的是,如果不需要管理字节序,则在Java级别进行数组复制。为了实现这一点,我需要知道String内部是否存储在Big或Little端。如果String内部存储在Little Endian中,我更喜欢调用getBytes(“UTF16-LE”)并将其作为Little Endian直接传递给本机代码。

所以任何人都知道Android使用的是什么以及最有效的getBytes(...)调用是什么?

1 个答案:

答案 0 :(得分:3)

您可以查看ByteOrder.nativeOrder()返回的值。使用本机字节序的jdk javadoc提示可以提高性能。但是你应该在急于得出结论之前检查对android的影响。