【问题标题】:Which is the most efficient getBytes in Android to get a UTF-16 byte array哪个是Android中获取UTF-16字节数组最有效的getBytes
【发布时间】:2014-02-12 23:05:00
【问题描述】:

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

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

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

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

所以有人知道 Android 在后台使用什么以及最有效的 getBytes(...) 调用吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 哇,感谢您的快速回复和参考文献,正是我所需要的。
    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 2019-10-08
    • 1970-01-01
    • 2014-12-28
    相关资源
    最近更新 更多