Ruby无符号右移运算符

时间:2011-09-09 13:36:26

标签: ruby jruby bit-manipulation

我正在尝试将我的一些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 :(得分:0)

这将交换前2个字节并切断整数的所有高位:

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