2014-02-12 3 views
1

그래서 Android String은 내부적으로 UTF-16으로 저장됩니다. 내가 잘 모르는 것은 내부적으로 사용되는 Big Endian 또는 Little Endian인지 여부입니다.안드로이드에서 UTF-16 바이트 배열을 얻는 데 가장 효율적인 getBytes는 어느 것입니까

getBytes ("UTF")를 호출하면 BOM이있는 BE 바이트 배열이 반환됩니다. 이것은 문자열이 내부적으로 저장되는 방식이라는 것을 의미합니까?

UTF-16 문자의 바이트 버퍼로 호출해야하는 C API가 있습니다. 필요한 경우 엔디안을 관리하기 위해 C API를 조정할 수 있습니다.

피할 수없는 것은 endianess를 관리하기 위해 필요하지 않다면 Java 레벨에서 배열 복사를하는 것입니다. 그 작동하도록 문자열 String 내부적으로 빅 또는 리틀 엔디안 저장되어 있는지 알아야합니다. String이 내부적으로 Little Endian에 저장되어 있다면, getBytes ("UTF16-LE")를 호출하고 Little Endian을 기본 코드로 바로 전달하는 편이 더 좋습니다.

Android가 후드에서 사용하는 것을 알고 누구보다 getBytes (...)가 가장 효율적입니까?

답변

2

ByteOrder.nativeOrder()에 의해 반환 된 값을 확인할 수 있습니다. jdk javadoc은 기본 엔디안을 사용하면 성능이 향상 될 수 있음을 알립니다. 하지만 결론에 쇄도하기 전에 안드로이드에 대한 영향을 확인해야 할 것입니다.

+0

와우, 빠른 답장을 보내 주셔서 감사합니다. – user1816142