java целое число в байт и байт в целое число

Я знаю -, что в Java -int занимает 4 байта. Но я хочу скрыть массив байтов от int до n -, где n может быть 1, 2, 3 или 4 байта. Я хочу, чтобы это было подписанным байтом/байтом, так что, если мне нужно преобразовать их обратно в событие int (, если это был 1 байт ), я получаю тот же подписанный int. Я полностью осознаю возможность потери точности при преобразовании из int в 3 или меньшие байты.

Мне удалось преобразовать из int в n -байт, но преобразование его обратно для отрицательного числа дает беззнаковые результаты.

Изменить:

int to bytes (параметр n указывает необходимое количество байтов 1,2,3 или 4 независимо от возможной потери прецессии)

public static byte[] intToBytes(int x, int n) {
    byte[] bytes = new byte[n];
    for (int i = 0; i < n; i++, x >>>= 8)
        bytes[i] = (byte) (x & 0xFF);
    return bytes;
}

байтов в int (независимо от того, сколько байтов 1,2,3 или 4)

public static int bytesToInt(byte[] x) {
    int value = 0;
    for(int i = 0; i < x.length; i++)
        value += ((long) x[i] & 0xffL) << (8 * i);
    return value;
}

Вероятно, проблема в конвертере байтов в int.

5
задан ccit 11 July 2012 в 07:17
поделиться