1

我想将按位运算符“&”与这样的字符串一起使用:

 raw_counter_int = raw_counter.to_i
 raw_counter_bin = raw_counter_int.to_s(2)
 u = (2**62 + 2**63)
 k = u.to_s(2)
 r =  raw_counter_bin & k
 @counter_msg = r

但是当我运行我的应用程序时,我有这个错误消息:

undefined method `&' for "10000000000000000000000000000000000000000000000000000000":String

如何将此运算符“&”与以二进制转换的 raw_counter_int 和 u 一起使用?

我尝试这样做:0000 0000 1000 0000 0000 0000 0000 0000(64 位)在第三个字节和第 10 个字节之间获取字节。所以我想用 0000 0000 1000 0000 0000 0000 0000 0000 & 0011 1111 1100 0000 0000 0000 0000 0000 做一个按位“&”来取这个:00 0000 10

4

1 回答 1

1

我尝试这样做:0000 0000 1000 0000 0000 0000 0000 0000(64 位)在第三个字节和第 10 个字节之间获取字节。所以我想用 0000 0000 1000 0000 0000 0000 0000 0000 & 0011 1111 1100 0000 0000 0000 0000 0000 做一个按位“&”来取这个:00 0000 10

我们开始做吧:

("00000000100000000000000000000000".to_i(2) & "00111111110000000000000000000000".to_i(2)).to_s(2)
=> "100000000000000000000000"

这正是预期的!错误 ( "10000000000000000000000000000000000000000000000000000000") 中显示的数字是2^56,当与它一起使用按位与时,预计2^62+2^63会给您一个零结果...

我建议您再次检查您的输入,并信任 ruby&​​ 来完成这项工作......

于 2014-03-25T17:05:06.977 回答