2016-06-06 2 views
-1

Я пытаюсь получить значения Unicode строки в массив байтов.преобразовать String в массив Unicode Byte

Я начал использовать следующий код, указывающий Ascii. Это дало список чисел, как и следовало ожидать.

byte[] bytes = null; 
try { 
    bytes = listOfApps.getBytes("US-ASCII"); 
}catch(Exception e){} 
Log.e(TAG, "bytes = " + Arrays.toString(bytes)); 
listOfAllApps = Gallery|Camera|Contacts|Phone|Email|Messages|Settings...... 

bytes = [71, 97, 108, 108, 101, 114, 121, 124, 67, 97, 109, 101, 114, 97...... 

. Итак, я изменил свой код на следующий, чтобы указать unicode.

byte[] bytes = null; 
try { 
    bytes = listOfApps.getBytes(Charset.forName("UTF-8")); 
}catch(Exception e){} 
Log.e(TAG, "bytes = " + Arrays.toString(bytes)); 

Я все еще получаю такой же выход. Я думал, что получаю массив значений, начинающийся с \ u. Кто-нибудь знает, что я делаю неправильно?

+3

Вы всегда будете получать 'byte' из' byte [] '. –

+5

«Галерея | Камера | Контакты | Телефон | Email | Сообщения | Настройки» - все представляются с кодовыми точками <128. Что вы ожидаете от US-ASCII и UTF-8? –

+0

"преобразовать String в массив Unicode Char" Существует различие между 'char' и' byte' - пожалуйста, обновите свой заголовок, если вы действительно имеете в виду «массив байтов». –

ответ

-1
   String aStr = "gallery|settings|À "; 

       char[] charArray = aStr.toCharArray(); 

       for(int i = 0; i < charArray.length; i++){ 

        int x = Character.codePointAt(charArray, i); 
        Log.e(TAG, "x = " + x); 
       } 

x = 103 
x = 97 
x = 108 
x = 108 
x = 101 
x = 114 
x = 121 
x = 124 
x = 115 
x = 101 
x = 116 
x = 116 
x = 105 
x = 110 
x = 103 
x = 115 
x = 124 
x = 192 //À 
x = 32 
+1

Предположим, что кто-то написал это, и вы, спрашивающий, видите это. Вы поймете, что это значит? Вы поймете, что пытается сказать вам ответчик? Если нет, добавьте объяснение в свой ответ. – Tom

Смежные вопросы