我们尝试使用以下Java代码将字符串转换为Byte[]
:
String source = "0123456789";
byte[] byteArray = source.getBytes("UTF-16");
我们得到一个长度为22字节的字节数组,我们不确定这个填充从哪里来。如何获得长度为20的数组?
发布于 2008-10-23 08:53:16
Alexander's answer解释了它存在的原因,但没有解释如何摆脱它。您只需在编码名称中指定所需的字节顺序:
String source = "0123456789";
byte[] byteArray = source.getBytes("UTF-16LE"); // Or UTF-16BE
发布于 2008-10-23 08:50:31
可能是前两个字节是Byte Order Mark。它指定编码中使用的每个16位字中的字节顺序。
发布于 2008-10-23 08:52:43
试着打印出十六进制的字节,看看额外的2个字节是在哪里添加的-它们是在开头还是结尾?
我选择你会在开始处找到一个byte order marker (0xFEFF) -这允许任何使用(接收)字节数组的人识别编码是小端还是大端。
https://stackoverflow.com/questions/228987
复制相似问题