我想使用按位运算符"&"用这样的字符串:
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
答案 0 :(得分:0)
我试试这个: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
,当使用按位AND时,2^62+2^63
期望给出零结果。 ..
我建议您再次检查输入,并相信ruby的&
来完成这项工作......