访问2位长无符号字符(C)的数字

访问2位长无符号字符(C)的数字,c,C,在C语言中,我很好奇如何获取一个无符号字符(两位数长),并能够将第一个数字存储到另一个无符号字符中,将第二个数字存储到另一个无符号字符中。假设您使用的是十进制数字,您可以这样做: unsigned char v = 42; unsigned char tens = v / 10; unsigned char ones = v % 10; 整数除以十则丢弃1;将除法的余数除以十,则数字的其余部分将下降。这取决于数字的含义 如果你说的是十进制数字,你需要做的是反复除以10(十进制数字的基数),然后

在C语言中,我很好奇如何获取一个无符号字符(两位数长),并能够将第一个数字存储到另一个无符号字符中,将第二个数字存储到另一个无符号字符中。

假设您使用的是十进制数字,您可以这样做:

unsigned char v = 42;
unsigned char tens = v / 10;
unsigned char ones = v % 10;

整数除以十则丢弃1;将除法的余数除以十,则数字的其余部分将下降。

这取决于数字的含义

如果你说的是十进制数字,你需要做的是反复除以10(十进制数字的基数),然后得到余数,以便提取每个数字。如果只有两个数字,那么第一个数字可以通过仅仅除以10来提取,第二个数字可以通过得到除以10的剩余部分来提取

如果你说的是十六进制数字,你可以像上面一样做,但是用16作为基数。或者,您可以利用一个字节由两个4位nybble组成的事实,每个nybble可以由一个十六进制数字表示。因此,高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;
}
#包括
无效十六进制数字(无效)
{
无符号字符uc=0xAB;
无符号字符nyb_hi=uc>>4;
无符号字符nyb_lo=uc&0xF;
printf(“高nybble:0x%X,低:0x%X\n”,nybu高,nybu低);
}
无效十进制数字(无效)
{
无符号字符uc=12;
无符号字符d1=uc/10;
无符号字符d2=uc%10;
printf(“第一个数字:%u,第二个数字:%u\n”,d1,d2);
}
内部主(空)
{
十六进制数字();
十进制数字();
返回0;
}

到目前为止,您尝试了哪些不起作用的方法?另外,
无符号字符
能够存储两个以上的数字,因此您的问题没有意义。您需要编辑并提供更多信息,同时显示您自己试图解决的问题。