在 C 中,我很好奇如何获取一个无符号字符(即两位长)并能够将第一个数字存储到不同的无符号字符中,并将第二个数字存储到不同的无符号字符中。
问问题
270 次
2 回答
1
这取决于您所说的数字。
如果您在谈论十进制数字,您需要做的是反复除以 10(十进制数字的基数)并获得余数以提取每个数字。如果只有 2 个数字,则可以通过仅除以 10 来提取第一个数字,通过除以 10 的余数来提取第二个数字。
如果您在谈论十六进制数字,您可以执行与上述相同的操作,但使用以 16 为基数。或者,您可以利用一个字节由两个 4 位 nybbles 组成的事实,每个 nybbles 都可以由一个十六进制数字表示。因此,高 4 位构成第一位,低 4 位构成第二位。
这是一个显示这两种方法的示例:
#include <stdio.h>
void hex_digits(void)
{
unsigned char uc = 0xAB;
unsigned char nyb_hi = uc >> 4;
unsigned char nyb_lo = uc & 0xF;
printf("High nybble: 0x%X, low: 0x%X\n", nyb_hi, nyb_lo);
}
void decimal_digits(void)
{
unsigned char uc = 12;
unsigned char d1 = uc / 10;
unsigned char d2 = uc % 10;
printf("First digit: %u, second: %u\n", d1, d2);
}
int main(void)
{
hex_digits();
decimal_digits();
return 0;
}
于 2012-10-28T03:31:41.013 回答
1
假设你说的是十进制数字,你可以这样做:
unsigned char v = 42;
unsigned char tens = v / 10;
unsigned char ones = v % 10;
整数除以十舍弃;获得除以 10 的余数会去掉余数。
于 2012-10-28T03:22:46.223 回答