【问题标题】:Converting a Java string to a WORD, DWORD or QWORD将 Java 字符串转换为 WORD、DWORD 或 QWORD
【发布时间】:2012-11-10 04:49:29
【问题描述】:

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

word.getBytes("UTF-32LE")

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

谢谢, 利亚姆。

【问题讨论】:

    标签: java word dword


    【解决方案1】:

    因为您正在编码为每个字符占用 4 个字节的格式 (UTF-32) See description here

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-21
        • 2016-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-24
        • 2023-03-17
        • 2013-01-29
        相关资源
        最近更新 更多