Почему byteArray имеет длину 22 вместо 20?

47
задан kiamlaluno 9 December 2012 в 09:27
поделиться

4 ответа

ответ Alexander объясняет, почему это там, но не, как избавиться от него. Просто необходимо определить порядок байтов, который Вы хотите на имя кодирования:

String source = "0123456789";
byte[] byteArray = source.getBytes("UTF-16LE"); // Or UTF-16BE
70
ответ дан Community 26 November 2019 в 19:29
поделиться

Могут быть первые два байта, порядок байтов Mark . Это определяет порядок байтов в каждом 16-разрядном слове, используемом в кодировании.

25
ответ дан Paŭlo Ebermann 26 November 2019 в 19:29
поделиться

Попытайтесь распечатать байты в шестнадцатеричном числе для наблюдения, где дополнительные 2 байта добавляются - они в запуске или конце?

я выбираю это, Вы найдете маркер порядка байтов в запуске (0xFEFF) - это позволяет любому потребление (получающее) массив байтов, чтобы распознать, с прямым порядком байтов ли кодирование или с обратным порядком байтов.

7
ответ дан Bevan 26 November 2019 в 19:29
поделиться

UTF имеет маркер порядка байтов вначале, который говорит, что этот поток кодируется в конкретном формате. Как другие пользователи указали,
, 1-й байт является 0XFE
, 2-й байт является 0XFF
, который остающиеся байты
0
48
0
49
0
50
0
51
0
52
0
53
0
54
0
55
0
56
0
57

6
ответ дан anjanb 26 November 2019 в 19:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: