В Java:Hexadecimal: Установите 8-битные байты в Int
У меня есть 32-разрядное число, данное мне в шестнадцатеричной форме. Мне задано определенное количество байтов (0-3, 0 для младшего байта) и сказано, что мне нужно заменить этот байт другим байтом, который также предоставляется мне в шестнадцатеричной форме. Пример: 32-разрядный номер 0xAAA5BBC6, замените байт 1 на 0x17, чтобы получить 0xAAA517C6.
Я не могу использовать любое литье, умножение, сложение, вычитание или условные обозначения. Я не могу написать какие-либо вспомогательные методы или вызвать любой другой метод из этого или другого файла для реализации любого метода. Кроме того, это должно быть написано в одной строке кода.
Я считаю, что я должен использовать маскировку, но я не могу понять, с чего начать. Учитывая количество байтов, как я могу изменить все 8 бит. Легко переключать один или один, но переключать все 8 бит на определенное значение?
Подумайте о том, как вы замаскируете один бит ... затем попытайтесь скрыть 8 последовательных битов таким же образом. – Buddy
Посмотрите на операторы с битрейтом. Используйте их, чтобы переместить маску на место. – Thilo
Просто примечание: путь пронумерованных байтов _not_ universal. Обычно младший байт 32-разрядного номера называется «байт 0», но я видел его другими способами - я видел, что он называется байтом 3, причем байт 0 является 8 разрядами высокого порядка, и я даже сталкиваюсь с людьми, которые назовут его байтом 4. Поэтому, задавая такой вопрос, лучше всего уточнить. Если вы не знаете, то вам нужно попросить человека, который говорит вам сделать это. – ajb