首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么byteArray的长度是22而不是20?

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

Stack Overflow用户
提问于 2008-10-23 08:45:39
回答 4查看 81.8K关注 0票数 47

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

代码语言:javascript
复制
String source = "0123456789";
byte[] byteArray = source.getBytes("UTF-16");

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-10-23 08:53:16

Alexander's answer解释了它存在的原因,但没有解释如何摆脱它。您只需在编码名称中指定所需的字节顺序:

代码语言:javascript
复制
String source = "0123456789";
byte[] byteArray = source.getBytes("UTF-16LE"); // Or UTF-16BE
票数 71
EN

Stack Overflow用户

发布于 2008-10-23 08:50:31

可能是前两个字节是Byte Order Mark。它指定编码中使用的每个16位字中的字节顺序。

票数 25
EN

Stack Overflow用户

发布于 2008-10-23 08:52:43

试着打印出十六进制的字节,看看额外的2个字节是在哪里添加的-它们是在开头还是结尾?

我选择你会在开始处找到一个byte order marker (0xFEFF) -这允许任何使用(接收)字节数组的人识别编码是小端还是大端。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/228987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档