我遇到了一个问题:基于无符号整数形成一个字符数组。数组将以十六进制表示法表示该 int。使用按位运算符执行此操作。
所以,我的想法如下:我创建了一个掩码,它的 4 个最低值位为 1。我将给定 int 的位向右推 4 并在该 int 和掩码上使用 & 。我重复直到(int!= 0)。我的问题是:当我得到单独的十六进制数字(4 位包)时,如何将它们转换为字符?例如,我得到:
x & mask = 1101(2) = 13(10) = D(16)
是否有将 int 转换为十六进制表示的函数,或者我是否必须对 switch 语句或其他任何东西使用蛮力?
我差点忘记了,我是在 C 中做的 :)
这就是我的意思:
#include <stdio.h>
#include <stdlib.h>
#define BLOCK 4
int main() {
unsigned int x, y, i, mask;
char a[4];
printf("Enter a positive number: ");
scanf("%u", &x);
for (i = sizeof(usnsigned int), mask = ~(~0 << 4); x; i--, x >>= BLOCK) {
y = x & mask;
a[i] = FICTIVE_NUM_TO_HEX_DIGIT(y);
}
print_array(a);
return EXIT_SUCCESS;
}