将字符串转换为ruby中的位,添加1位并转换回ascii

时间:2014-07-25 03:58:21

标签: ruby ruby-on-rails-4 bit-manipulation bits

我正在编写一个ruby uid生成器,我需要以递增顺序生成唯一ID。唯一ID是3到9个字符的字符串。

我想要实现的目标是:

获取最后生成的标识符,将其转换为位,并将1位转换为它(基本上执行+ 1)并将结果转换回ascii。这样我就可以防止生成两次唯一的id。

我如何在ruby中执行此操作。我知道#pack和#unpack方法,但我无法找到方法。

1 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

a = "Foobar".unpack("B*")[0].to_i(2)+1

=> 77444424032627

["0" + a.to_s(2)].pack("B*")

=> “Foobas”