我知道它会接受一个数字并返回一个角色。我理解每行代码的作用,但我无法用有意义的方式真正表达它的整体行为。有什么想法吗?
int function(uint64_t P1) {
uint64_t L1 = P1;
uint32_t L2 = 1;
while (L1 > 15) {
L2 = (uint64_t)L2 << 4;
L1 = L1 >> 4;
}
uint32_t L3 = 0;
while (L2 != 0) {
L1 = P1;
uint32_t L4 = 0;
L4 = L1 % L2;
uint64_t L5 = (uint64_t)L4;
sub_function(L1 / L2);
L3++;
P1 = L5;
L2 = (uint64_t)L2 >> 4;
}
L1 = L3;
return L1;
}
void sub_function(uint64_t P1) {
if (P1 <= 9) {
printf("%c", P1 + 48);
} else {
printf("%c", P1 + 55);
}
}
答案 0 :(得分:1)
此代码接受十进制值并打印十六进制表示。
在C中,我们可以使用%x
(%X
)格式说明符标记printf
为我们执行此操作:
printf("%X", 16); // 10
printf("\n");
printf("%X", 42); // 2A
如果您使用的是C ++编译器,我们可以使用iostream
上的std::hex
流操作标志来实现相同的结果:
std::cout << std::hex << 16 << std::endl; // 10
std::cout << std::hex << 42 << std::endl; // 2a