我正在研究 Java 多媒体 IO 项目并且遇到了一个问题,当我尝试编写一个 DWORD 时,它的长度是 16 个字节而不是 4 个字节。我正在使用以下代码将 4 char 字符串转换为 16 位 little endian 字节数组;
word.getBytes("UTF-32LE")
如果有人请告诉我为什么数组长于 4 个字节。
谢谢,利亚姆。
因为您正在编码为每个字符占用 4 个字节的格式 (UTF-32),请参见此处的描述
如果您希望它是每个字符一个字节,请使用“UTF-8”而不是“UTF-32LE”
好的,我做了一些调试,发现直接从 '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);
我不知道我遇到的问题是错误还是它返回的原因。