c-如何将两个或三个字符组合为一个整数/字符



我正在从UART获取字符,例如"\n43\n"或"\n912\n"。我打算将其设为一个整数,以便比较我的应用程序中的值。

示例:

     int a = 43;
     int b;
     /*Combine the character getting from the uart copy to integer "b";*/
     if(a==b)
     {
         /*perform some operation*/
     }

由于字符ASCII小于256,因此可以安全地执行以下操作。

int combine(char a, char b, char c)
{
    return (a << 20) | (b << 10) | c;
}

当a、b、c的值小于1000附近时,如2^10 = 1024一样,这是有效的。

要取回它们:

a = combined >> 20;
b = (combined >> 10) & 0x3ff;
c = combined & 0x3ff;
#include<string.h>
#include<stdio.h>
int main()
{
int number;
char a[30] = "n43n";
number = atoi(a);
printf("magic is %d",number);
if(number == 43)
   printf("This works....!n");
return 0;
}

你听说过atoi()

编辑

int main()
{
int number = 0;
char a[30];
a[0] = '4';
a[1] = '3';
a[2] = '';
number = atoi(a);
printf("magic is %d",number);
return 0;
}

最新更新