Мне нужно преобразовать число в массив байтов, а затем вернуться к номеру. Проблема заключается в том, что массив байт переменной размера, так что мне нужно, чтобы преобразовать число, учитывая его длину байт, методы, которые я придумал таковы: (Java)массив байтов с переменной длиной до номера
private static byte[] toArray(long value, int bytes) {
byte[] res = new byte[bytes];
final int max = bytes*8;
for(int i = 1; i <= bytes; i++)
res[i - 1] = (byte) (value >> (max - 8 * i));
return res;
}
private static long toLong(byte[] value) {
long res = 0;
for (byte b : value)
res = (res << 8) | (b & 0xff);
return res;
}
Здесь я использую длинный потому что 8 - это максимальные байты, которые мы можем использовать. Этот метод отлично работает с положительными числами, но я не могу заставить декодировать работу с негативами.
EDIT: чтобы проверить это, я попытался с обработкой значение Integer.MIN_VALUE + 1 (-2147483647) и 4 байта
Dunno, если проблема решена сейчас, но ... Посмотрите, помогает ли мой ответ с обработкой l arge отрицательные значения. –