gpt4 book ai didi

ruby - 小端位掩码

转载 作者:数据小太阳 更新时间:2023-10-29 08:06:28 25 4
gpt4 key购买 nike

我需要使用 Ruby 将整数数组转换为小端位掩码。任何链接或提示将不胜感激。

这个例子说 [2,7,9,11] => "4205"

a = [2,7,9,11] # 4205
b = [1,2,3,4] # 0F00
def array_to_mask(arr)
mask = 0
arr.each do |i|
mask = mask | (1 << i)
end
return mask.to_s(16)
end
p array_to_mask(a) # a84
p array_to_mask(b) # 1e

这行不通,但我走在正确的轨道上吗?

最佳答案

你不能用arr.pack()吗? ?它有字节顺序选项。

更新:好的,我已经查看了您提到的文档,我可以使示例正常工作的唯一方法是:

  7          2              11   9      (decimal index count)
0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 (bits)

4 2 0 5 (nibbles, in hex)

但这是否意味着 4205 是 4 个半字节,它们一起代表 2 个字节?这是我可以让第一个字节设置第二位和第七位的唯一方法(读取小端)。

...这更像是一个“理解文档”问题,而不是 ruby 问题。

所以数组解决方案不是您需要的解决方案,因为您需要设置数字中的各个位。这最好使用(左)位移位 << 和 or'ing | 来实现。结果在一起。

关于ruby - 小端位掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2052214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com