【发布时间】:2014-12-12 04:41:40
【问题描述】:
给定一个由四个 8 位无符号整数组成的数组,例如 32-bit RGBA color
rgba = [255, 255, 255, 255] # white
将这四个 Fixnums 组合成一个 32 位 Integer 的最有效方法是什么?
目前,我正在使用打包和解包:
rgba.pack('C*').unpack('L')[0] #=> 4294967295
# Check work: same value as corresponding hex literal
0xffffffff #=> 4294967295
但我想知道是否有更有效的方法。我发现了这个 C++ 问题:
Cleanest way to combine two shorts to an int
我认为<< 是一个“移位”,| 是一个“掩码”,但我对这些运算符了解不够,并且从未在 ruby 中使用过它们。
【问题讨论】:
标签: ruby bit-manipulation