处理十六进制数时,如何使用位偏移量和长度来获取值?
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
位转换回十六进制。
我有以下号码
0000C1FF61A40000
偏移量或起点是 36 或 0x23
号码长度为12或0xc
有人可以帮助我了解如何获得结果值吗?我认为偏移量意味着从哪对十六进制数字开始,然后长度就是要抓取多少。绝对不是 36 对,只有 8 对。不确定我如何只用 8 对来做 12 的长度。
每个十六进制数字代表四个二进制位。因此,您的 36 位偏移量(BTW 是 0x24,而不是 0x23)相当于 9 个十六进制数字。因此,丢弃原始数字中最右边的 9 位数字,留下 0000C1F
.
那么你要的数的长度是12位,也就是3个十六进制数。所以舍弃除最右边的 3 位数字之外的所有数字,留下 C1F
作为答案。
如果位数不是4的好倍数那么你就不得不将原来的十六进制数转换成二进制,然后舍弃右边的offset
位数,只保留最右边的length
位,最后将这些 length
位转换回十六进制。