因此,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(...)调用是什么?
答案 0 :(得分:3)
您可以查看ByteOrder.nativeOrder()
返回的值。使用本机字节序的jdk javadoc提示可以提高性能。但是你应该在急于得出结论之前检查对android的影响。