【问题标题】:Use bitwise AND with string on ruby on rails在 ruby​​ on rails 上使用按位与字符串
【发布时间】:2014-05-03 12:20:21
【问题描述】:

我想用按位运算符“&”这样的字符串:

 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

【问题讨论】:

  • 这里不需要字符串转换raw_counter_int.to_s(2)我想。
  • 好吧,你把它转换成一个字符串,你期望什么? & 适用于数字,而不是字符串。已经是整数了,用&就行了。
  • 为什么?当我删除.TO_COUNTER_BIN和K上的时,我将那0,所以我做652144440&(2 62 + 2 63),我想做100000000000000000000/1000000/30000/30000/60000/30000/00000000/0000000000/0000000000/0000000000/00000000/0000000/0000000/060000/30000/30000/30000/30000/30000/30000/344
  • 我尝试使用这个: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
  • 我发现了一个与此无关的错误。但与bit-wise操作有关ruby-forum.com/topic/85756

标签: ruby operators bit-manipulation bitwise-operators bitwise-and


【解决方案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,当使用按位 AND 和 2^62+2^63 时,预计会给你一个零结果...

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 2014-06-21
    • 2011-11-16
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    相关资源
    最近更新 更多