处理十六进制数时,如何使用位偏移量和长度来获取值?

When dealing with hexadecimal numbers how do I use bit offset and length to get a value?

我有以下号码

0000C1FF61A40000

偏移量或起点是 36 或 0x23

号码长度为12或0xc

有人可以帮助我了解如何获得结果值吗?我认为偏移量意味着从哪对十六进制数字开始,然后长度就是要抓取多少。绝对不是 36 对,只有 8 对。不确定我如何只用 8 对来做 12 的长度。

每个十六进制数字代表四个二进制位。因此,您的 36 位偏移量(BTW 是 0x24,而不是 0x23)相当于 9 个十六进制数字。因此,丢弃原始数字中最右边的 9 位数字,留下 0000C1F.

那么你要的数的长度是12位,也就是3个十六进制数。所以舍弃除最右边的 3 位数字之外的所有数字,留下 C1F 作为答案。

如果位数不是4的好倍数那么你就不得不将原来的十六进制数转换成二进制,然后舍弃右边的offset位数,只保留最右边的length 位,最后将这些 length 位转换回十六进制。