0
- reverseBytes - обратный байтов
- Пример: reverseBytes (0xabcdef) = 0xefcdab8967452301
- Юридические ОПС: ~ &^| + < < >>
Я должен решить вышеуказанную проблему. Нет никакого ограничения на нет. операторов. У меня уже есть другое решение. Но я хотел бы знать, в чем проблема со следующим решением, с которым я столкнулся? Спасибо.reverseBytes с использованием Битовые операторы
long reverseBytes(long x) {
int a = x; //Get first bytes, first 8 bits
int b = (a >> 8); //Get 2nd byte
int c = (b >> 8); //3rd byte
int d = (c >> 8); //4th
int e = (d >> 8); //5th
int f = (e >> 8); //6th
int g = (f >> 8); //7th
int h = (g >> 8); //8th
a = a & 0xFF; //Remove the rest except LSB byte
b = b & 0xFF; // same
c = c & 0xFF;
d = d & 0xFF;
e = e & 0xFF;
f = f & 0xFF;
g = g & 0xFF;
h = h & 0xFF;
return ((a << 56) + (b << 48) + (c << 40) + (d << 32) + (e << 24) + (f << 16) + (g << 8) + (h));
}
Вы пытались запустить ваш решения и выяснить, что не так? – Marco
Конечно. Я бы не знал, что это было неправильно, если бы я не пробовал. Я просто извлекал каждый байт в целое число. Затем суммировали их после перехода на свое конкретное положение. Последний байт (LSB) становится первым (MSB) ... и так далее. –
То, как вы извлекаете байты, уже не работает (и не должно использоваться, слишком серийно), поскольку оно полагается на весь набор 'long' в' int' – harold