对Ruby字符串的按位操作

时间:2014-05-08 22:00:56

标签: ruby bit-manipulation

在C ++代码块中,我看到了类似这样的内容:

enum {
  a = 0,
  b = (1U << 0),
  c = (1U << 1),
  d = (1U << 2)
}

要在Ruby中实现同样的目标,我是否必须做这样的事情?

d = "1U".bytes.inject { |x,y| (x<<8) | y } << 2

或者我是否需要做其他事来完成C ++代码的工作?

1 个答案:

答案 0 :(得分:2)

C ++中的1U不是字符串,它是无符号数字1.实际上,C ++中的上述代码可以替换为:

a = 0;
b = 1U;
c = 2U;
d = 4U;

在红宝石中你可以简单地做

> 1 << 0
 => 1 #0001
> 1 << 1
 => 2 #0010
> 1 << 2
 => 4 #0100

但是你没有在ruby中使用字节操作,除非你有充分的理由,对吧? : - )