Во-первых, кажется, предполагают, что ИНТ большой байтов. Ну, это Java, так что это, безусловно, будет.
Во-вторых, ваша ошибка ожидается: int составляет 4 байта.
Так как вы хотите два последних байта, вы можете сделать это без того, чтобы пройти через байтовый буфер:
public static byte[] toBytes(final int counter)
{
final byte[] ret = new byte[2];
ret[0] = (byte) ((counter & 0xff00) >> 8);
ret[1] = (byte) (counter & 0xff);
return ret;
}
Вы также мог бы использовать ByteBuffer
, конечно:
public static byte[] toBytes(final int counter)
{
// Integer.BYTES is there since Java 8
final ByteBuffer buf = ByteBuffer.allocate(Integer.BYTES);
buf.put(counter);
final byte[] ret = new byte[2];
// Skip the first two bytes, then put into the array
buf.position(2);
buf.put(ret);
return ret;
}
Ну, что вы ожидаете? Вы пытаетесь поместить 4 байта в буфер длиной 2 байта. – fge
Что вы пытаетесь достичь? –
изменено максимальное число до 32767 Если я сделаю это, сдвинув, значение 128 будет -128. Но мне нужны positiv байты – Struct