将2个char转换为1个int

时间:2012-12-15 16:56:20

标签: c casting char 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));

2 个答案:

答案 0 :(得分:2)

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

char high = 125;
char low = 12;

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

#include <limits.h>

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

答案 1 :(得分:1)

  

我有2个字符,HIGH和LOW,我想将它们转换为int对应HIGH + 2左边的LOW位。

您的说明不明确。给出:

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。你的计算充其量只是奇怪的。