已准备就绪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
另一种选择是使用pack
和unpack
:
[65000].pack('S').unpack('CC')
# => [232, 253]
[232, 253].pack('CC').unpack('S')
# => [65000]
另一个:
lower, upper = 65000.digits(256)
我相信Ruby中二进制转换的最惯用方法是Array#pack
和String#unpack
(就像Eric的答案中一样)。
您也可以选择使用数字#Divmod与256(2^8,字节大小):
> upper, lower = 65000.divmod(256)
# => [253, 232]
> upper
# => 253
> lower
# => 232
在这种情况下,要具有正确的字节,您的整数不应超过65535(2^16-1)。