Рубиновый беззнаковый оператор правого сдвига - PullRequest
2 голосов
/ 09 сентября 2011

Я пытаюсь преобразовать часть своего Java-кода в (J) Ruby, и из-за недостатка опыта работы с побитовыми операциями я столкнулся с проблемой, которую сам не могу решить.

Проще говоря, я не знаю, как преобразовать этот фрагмент кода Java в Ruby, так как в Ruby, похоже, нет беззнакового оператора сдвига вправо (>>>).

private static short flipEndian(short signedShort) {
  int input = signedShort & 0xFFFF;
  return (short) (input << 8 | (input & 0xFF00) >>> 8);
}

def self.flip_endian(signed_short)
  input = signed_short & 0xFFFF
  input << 8 | (input & 0xFF00) >> 8
end

1 Ответ

0 голосов
/ 11 сентября 2011

Это поменяет первые 2 байта и обрезает все старшие биты целого числа:

def self.flip_endian(input)
  input << 8 & 0xFF00 | input >> 8 & 0xFF
end
...