Преобразование строки Java в WORD, DWORD или QWORD

Я работаю над Java Multimedia IO Project и столкнулся с проблемой: когда я пытаюсь написать DWORD, он оказывается длиной 16 байтов вместо 4 байтов. Я использую следующий код для преобразования строки из 4 символов в 16-битный массив байтов с прямым порядком байтов;

word.getBytes("UTF-32LE")

Если кто-то может сказать мне, почему массив длиннее 4 байтов.

Спасибо, Лиам.


person Liam Haworth    schedule 10.11.2012    source источник


Ответы (2)



Хорошо, я провел некоторую отладку и обнаружил, что при записи байта прямо из '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);

Я не знаю, была ли проблема, с которой я столкнулся, ошибкой или это то, что заставило ее вернуться.

person Liam Haworth    schedule 10.11.2012