因此,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/