将输入的8位十六进制数转换为10位的算法如下:
Given that the 8 digit number is: '12 34 56 78' x1 = 1 * 16^8 * 2^3 x2 = 2 * 16^7 * 2^2 x3 = 3 * 16^6 * 2^1 x4 = 4 * 16^4 * 2^4 x5 = 5 * 16^3 * 2^3 x6 = 6 * 16^2 * 2^2 x7 = 7 * 16^1 * 2^1 x8 = 8 * 16^0 * 2^0 Final 10 digit hex is: => x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 => '08 86 42 98 E8'
问题是-how to go back to 8 digit hex from a given 10 digit hex (for example: 08 86 42 98 E8 to 12 34 56 78)
一些示例输入和输出如下:
^{pr2}$另外,我认为问题不限于8或10位数。如果输入是11
,那么输出将是08
。
在
根据此转换算法:
您可以看到在
^{pr2}$16^4
之后,它跳到了16^6
。 把一个拉下来,这样它就安排得很好了。在16^1
是{把它们放在一起,你会发现功率上升得很好。在
与
2^something
相乘可以看作是左移运算符。在16^something
用于与基数16相乘。所以,这4个字节的数字变成5个字节:
因此,使用该图片,您可以创建一个函数,该函数接受10位的十六进制数,并使用简单的按位运算输出为4位的十六进制数。在
为了简单起见,我将在这个示例C代码中使用无符号字符:
以及输出(参见full code):
相关问题 更多 >
编程相关推荐