I have an counter
which counts from 0 to 32767
At each step, I want to convert the counter
(int) to an 2 byte array.
I've tried this, but I got a BufferOverflowException
exception:
byte[] bytearray = ByteBuffer.allocate(2).putInt(counter).array();
Yes, this is because an int
takes 4 bytes in a buffer, regardless of the value.
ByteBuffer.putInt
is clear about both this and the exception:
Writes four bytes containing the given int value, in the current byte order, into this buffer at the current position, and then increments the position by four.
...
Throws:
BufferOverflowException
- If there are fewer than four bytes remaining in this buffer
To write two bytes, use putShort
instead... and ideally change your counter
variable to be a short
as well, to make it clear what the range is expected to be.
See more on this question at Stackoverflow