当前位置:  开发笔记 > 编程语言 > 正文

为什么byteArray的长度为22而不是20?

如何解决《为什么byteArray的长度为22而不是20?》经验,为你挑选了4个好方法。

我们尝试从字符串转换为Byte[]使用以下Java代码:

String source = "0123456789";
byte[] byteArray = source.getBytes("UTF-16");

我们得到一个长度为22个字节的字节数组,我们不确定这个填充来自何处.如何获得长度为20的数组?



1> Jon Skeet..:

亚历山大的答案解释了为什么它存在,但不解释如何摆脱它.您只需在编码名称中指定所需的字节序:

String source = "0123456789";
byte[] byteArray = source.getBytes("UTF-16LE"); // Or UTF-16BE



2> Alexander..:

可能是前两个字节是字节顺序标记.它指定编码中使用的每个16位字的字节顺序.



3> Bevan..:

尝试打印出十六进制的字节,以查看添加额外2个字节的位置 - 它们是在开头还是结尾?

我选择你会在开始时找到一个字节顺序标记(0xFEFF) - 这允许任何消费(接收)字节数组的人识别编码是小端还是大端.



4> anjanb..:

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

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有