将2个char转换为1个int

我有2个字符:HIGH和LOW,我想把它们转换成一个对应HIGH的int +来自LOW的2个左位。

我试过像以下一样:

unsigned char high; unsigned char low; high = 128; // 10000000 low= 128; // 10000000 int result; (should be high 10000000 + 2 left bites of low 10 = 1000000010) // To do return result; 

编辑更清晰。

我选择的解决方案是:

 return high*4 + (low >> (CHAR_BIT - 2)); 

您将HIGHLOW声明为char* ,但不要将它们用作指针。 下面的代码工作正常(BTW,当你不使用常量时避免使用大写标识符):

 char high = 125; char low = 12; 

这就是我理解你的问题的方式(可能更容易理解):

 #include  int result = high + (low >> (CHAR_BIT - 2)); 

我有2个字符,HIGH和LOW,我想把它们转换成一个对应HIGH的int + LOW的2个左位。

您的规格不明确。 鉴于:

 unsigned char HIGH = 152; unsigned char LOW = 12; 

这可能意味着:

 int result = HIGH + (LOW >> 6); // Assuming CHAR_BIT == 8 

或者它可能意味着:

 int result = HIGH + (LOW & 0xC0); 

或者它可能意味着:

 int result = (HIGH << 2) | (LOW >> 6); 

或者它可能有其他一些含义。 对于问题中显示的值,前两个表达式产生相同的答案。

要获得更有意义的答案,您必须更加仔细地阐明要求。 您的实际代码几乎与您指定的要求没有明显的关系。 你有两个char *变量; 你将它们初始化为几乎肯定无效的地址; 你没有初始化result 。 你的计算充其量只是奇怪的。