我找到了一种方法来制作一个n位整数并对整数进行算术运算,但我不知道如何打印这些整数,我制作一个n位整数的方法只是制作一个数组,让说
char
,并使数组(数组元素的大小)/ n 个元素长。有谁知道如何打印这些吗?
不能使用标准库函数转换为字符串或以基数 != 2, 4, 8, 16(通常为 2^n)打印。
如果您想使用这些基础进行打印,您可以轻松编写自己的函数
void printInteger(const void *buff, size_t size, int base)
{
const char digits[] = "0123456789ABCDEF";
const unsigned char *uc = buff + size - 1;
unsigned nbits;
unsigned mask;
switch(base)
{
case 2:
nbits = 1;
break;
case 4:
nbits = 2;
break;
case 8:
nbits = 3;
break;
case 16:
nbits = 4;
break;
default:
return;
}
mask = (1U << nbits) - 1;
while(size--)
{
for(int nb = CHAR_BIT / nbits - 1; nb >= 0; nb--)
{
printf("%c", digits[(*uc >> (nb * nbits)) & mask]);
}
uc--;
}
}
int main(void)
{
unsigned test = 0x12345678;
printInteger(&test, sizeof(test), 16);
printf("\n");
printInteger(&test, sizeof(test), 8);
printf("\n");
printInteger(&test, sizeof(test), 4);
printf("\n");
printInteger(&test, sizeof(test), 2);
printf("\n");
}