0

我正在研究 Java 多媒体 IO 项目并且遇到了一个问题,当我尝试编写一个 DWORD 时,它的长度是 16 个字节而不是 4 个字节。我正在使用以下代码将 4 char 字符串转换为 16 位 little endian 字节数组;

word.getBytes("UTF-32LE")

如果有人请告诉我为什么数组长于 4 个字节。

谢谢,利亚姆。

4

2 回答 2

1

因为您正在编码为每个字符占用 4 个字节的格式 (UTF-32),请参见此处的描述

如果您希望它是每个字符一个字节,请使用“UTF-8”而不是“UTF-32LE”

于 2012-11-10T05:17:59.553 回答
0

好的,我做了一些调试,发现直接从 'wo​​rd.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);

我不知道我遇到的问题是错误还是它返回的原因。

于 2012-11-10T05:17:07.703 回答