我如何将整数分成红宝石中的2个字节二进制



已准备就绪C#代码将整数分为2个字节,您可以在下面看到,需要在Ruby中重新编写相同的内容 -

int seat2 = 65000;

//分为两个字节

    byte seats = (byte)(seat2 & 0xFF); // lower byte
    byte options = (byte)((seat2 >> 8) & 0xFF); // upper byte

下面的输出

输出座椅=> 232选项=> 253

//合并回整数

        seat2 = (options << 8) | seats;

请建议任何人都有任何解决方案可以在Ruby中重写上述内容

您编写的代码在Ruby中可以很好地工作。

您可以简单地尝试:

seat2 = 65000
seat2 & 0xFF
# => 232
(seat2 >> 8) & 0xFF
# => 253

另一种选择是使用packunpack

[65000].pack('S').unpack('CC')
# => [232, 253]
[232, 253].pack('CC').unpack('S')
# => [65000]

另一个:

lower, upper = 65000.digits(256)

我相信Ruby中二进制转换的最惯用方法是Array#packString#unpack(就像Eric的答案中一样)。

您也可以选择使用数字#Divmod与256(2^8,字节大小):

> upper, lower = 65000.divmod(256)
# => [253, 232]
> upper
# => 253
> lower
# => 232

在这种情况下,要具有正确的字节,您的整数不应超过65535(2^16-1)。

最新更新