Konverter mellem ByteBuffer og byte array
Med dette eksempel skal vi demonstrere, hvordan man konverterer mellem ByteBuffere og byte-arrays. Kort sagt, for at foretage en konvertering mellem en ByteBuffer og et byte-array skal du:
- Opret et byte-array, og pak det ind i en ByteBuffer. Bufferens kapacitet og grænse vil være arrayets længde, og dens position vil være nul.
- Hent bytes mellem den aktuelle position og grænsen for bufferen. Det nye byte-arrays længde indstilles til antallet af resterende elementer i bufferen ved hjælp af
remaining()
API-metoden, og derefter overføres bytes fra bufferen til byte-arrayet ved hjælp afget(byte[] dst, int offset, int length)
API-metode. - Hent alle bytes i bufferen. Først sættes bufferpositionen til 0 og buffergrænsen indstilles til dens kapacitet med
clear()
API-metoden, så sættes længden af den nye byte-array til bufferens kapacitet og derefter igenget(byte[] dst, int offset, int length)
API-metoden overfører bytes fra bufferen til arrayet.
Lad os tage et kig på kodestykket, der følger.
// Create a byte array byte[] bytes = new byte[10]; // Wrap a byte array into a buffer ByteBuffer buf = ByteBuffer.wrap(bytes); // Retrieve bytes between the position and limit // (see Putting Bytes into a ByteBuffer) bytes = new byte[buf.remaining()]; // transfer bytes from this buffer into the given destination array buf.get(bytes, 0, bytes.length); // Retrieve all bytes in the buffer buf.clear(); bytes = new byte[buf.capacity()]; // transfer bytes from this buffer into the given destination array buf.get(bytes, 0, bytes.length);
Dette var et eksempel på, hvordan man konverterer mellem en ByteBuffer og en byte-array i Java.