Делаю шифрование с помощью сдвигов битов в байте.Но если байту присвоить значение больше 127, оно начинает терять данные.Как правильно перевести большое число в байты без потери данных или чтобы его можно было потом восстановить?
В Java нет беззнаковых типов, но если вы хотите - можете сымитировать беззнаковый байт uint8
(хранит значения 0...255), вычитая 256 из чисел больше 127. Так вы будите использовать отрицательную область -128...-1.
Обратное преобразование int b = Byte.toUnsignedInt(a);
Это будет работать для чисел до 255. Больше чем 256 значений в один байт положить не получиться.
Чтобы перевести в байты числа больших размеров берите байты от типов short
- 2 байта, int
- 4 байта, или long
- 8 байт. Отдельные байты можно получить методом битового сдвига.
Думаю для этих целей можно использовать BigInteger. Не думаю, что это оптимальный метод. В java вроде был api для шифрования и есть сторонние библиотеки. BigInteger можно перевести в массив байта путем вызова toByteArray(). Если есть знания английского или гугл переводчика https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html В дополнение комментария о сдвигах. В стандартной библиотеке нет циклических сдвигов для Byte. Но можно их реализовать на примере сдвигов для Integer из openjdk. rotateLeft и rotateRight методы.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пишу телеграмм бота вылетает ошибка:
Не могу запустить программуjar формата в терминале, и в графическом интерфейсе
Всем добрый день, собственно есть задачаПрочитать файл с определенными словами