转换2焦炭引入1个INT [闭合](Convert 2 char into 1 int [close

2019-07-05 09:30发布

我有2个字符:高,低,我想将它们转换为对应高一个int + 2左位从低。

我试着像somethine:

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;

编辑更加清晰。

我chosed解决的办法是:

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

Answer 1:

您声明HIGHLOWchar* ,但你不把它们作为指针。 下面的代码工作正常(顺便说一句,避免大写标识,当你不使用常量):

char high = 125;
char low = 12;

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

#include <limits.h>

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


Answer 2:

我有2个字符,高与低,我想将它们转换为一个int对应高+ 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 。 你的计算是,在最好的,奇怪的。



文章来源: Convert 2 char into 1 int [closed]
标签: c casting char int