我知道它将接受一个数字并返回一个字符。我理解每一行代码在做什么,但我无法真正以有意义的方式表达它总体上在做什么。有什么想法吗?
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);
}
}
最佳答案
此代码接受十进制值并打印十六进制表示形式。
在 C 中,我们可以使用 %x
(%X
) 格式说明符标志来 printf
来为我们做到这一点:
printf("%X", 16); // 10
printf("\n");
printf("%X", 42); // 2A
如果您使用的是 C++ 编译器,我们可以使用 std::hex
iostream 上的流操作标志可实现相同的结果:
std::cout << std::hex << 16 << std::endl; // 10
std::cout << std::hex << 42 << std::endl; // 2a
关于c - 这个C函数是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40889041/