我该如何提取水晶中的碎片



我将如何在crystal lang中提取十六进制数的位,它主要像ruby,因为我可以提取一个字节,但不能提取其中的4位
0x0312FCFC
----^^(1和2(
如何提取这2这是我提取第一个和最后4个的代码

op = ((x.to_i(16)) >> 24) & 0xff
im = (x.to_i(16)) & 0xffff

我试过的是

a1 = ((x.to_i(16)) >> 16) & 0xf0
a2 = ((x.to_i(16)) >> 16) & 0x0f

首先,将需要的位数向右移动。在您的示例中,它应该是16(4*4,因为您希望跳过最后4个十六进制字符FCFC(和20(5*4,跳过2FCFC(。然后屏蔽最后一个字节(... & 0xF(。

x = 0x0312FCFC
a = (x >> 16) & 0xF   # a = 2
b = (x >> 20) & 0xF   # b = 1

是的,Ruby和Crystal中的代码是相同的。

相关内容

  • 没有找到相关文章

最新更新