我正在研究Java多媒体IO项目并遇到了一个问题,当我尝试编写DWORD时,它的长度为16个字节,而不是4个字节。我正在使用以下代码将4字符串转换为16位小端字节数组;
word.getBytes("UTF-32LE")
如果有些问题,请告诉我为什么数组长4个字节。
谢谢, 小连
答案 0 :(得分:1)
因为您正在编码为每个字符需要4个字节的格式(UTF-32)See description here
如果你想让它成为每个字符的字节,请使用“UTF-8”而不是“UTF-32LE”
答案 1 :(得分:0)
好的,我做了一些调试,我发现当直接从'word.getBytes(“UTF-32LE”)写字节时,有一个额外的12个字节被添加,例如;
如果我要"RIFF".getBytes("UTF-32LE")
我会在文件中获得R000I000F000F000
,所以我使用以下代码来删除这些零,
byte[] bits = word.getBytes("UTF-32LE");
byte[] dword = new byte[4];
System.arraycopy(bits, 0, dword, 0, 1);
System.arraycopy(bits, 4, dword, 1, 1);
System.arraycopy(bits, 8, dword, 2, 1);
System.arraycopy(bits, 12, dword, 3, 1);
write(dword);
我不知道我遇到的问题是否是一个错误,或者是否是它返回的原因。