如何在Ruby中将signed int转换为nbBits上的十六进制表示?

时间:2011-12-22 11:04:56

标签: ruby bit-manipulation

例如:8位的-78_base10是0xB2

伪算法说:“ - A = / A + 1”

例如:

  • -78 => 78 => 01001110
  • 然后应用'bar':01001110 => 10110001
  • 然后'+1':10110001 + 1 = 10110010
  • 以hexa转换:0xB2

如何在Ruby中很好地获得结果(使用或不使用此'算法')。

2 个答案:

答案 0 :(得分:3)

这样的东西
def signed_int_to_hex(n)
  "0x%X" % (n % 2 ** 8)
end

signed_int_to_hex(-78) #=> "0xB2"

答案 1 :(得分:0)

((-78) % 2 ** 8).to_s(16)
# => "b2"