Я пытаюсь получить доступ к байту [] через ByteBuffer для представления определенного типа файла. Первые позиции в байте [] содержат некоторые метаданные и обрабатываются бит-манипуляциями. Таким образом, они не представляют собой символ вообще.Handle byte [] with ByteBuffer
Я хочу добавить данные файла (символы) в определенном фиксированном положении.
byte[] file_portion
содержит часть большого файла: начало раздела. Который включает заголовок с метаданными. content
- это строка с информацией, которую я хочу добавить в этот буфер. start_pos - первая позиция для хранения новых файлов-данных из контента.
ByteBuffer my_content = ByteBuffer.allocate(this.file_portion.length);
content_buffer.wrap(this.file_portion);
for (int i = 0; i < content.length(); i++) {
char tmp = content.toCharArray()[i];
my_content.put(this.start_pos + i, (byte) tmp)
}
Если я переназначить это я получаю мусор и пустота:
CharBuffer debug = my_content.asCharBuffer();
System.out.println("debug " + debug);
Я мог бы понять, если первые позиции показывают искаженные символы ... но ни одна позиция правильна.
Помимо ошибки, 'content.toCharArray() [i]' является уродливым, вы выделяете новый массив символов в каждой итерации цикла. Создайте массив char вне или используйте 'content.charAt (i)' – leonbloy