如何将unsigned char 转化为int

比如unsigned char 258 的值是2,但是我想要的是258,怎么让int的值是258而不是2
感觉最后一个比较合理,感觉适用范围是小于510时可用,但是如果是3011呢

无法实现的,强制转换后的int值还是2
既然你定义成unsigned char那他只能表示0-255.
unsigned char x=258;
这相当于int x1=258; x=(unsigned char)x1;
由于char类型只有8位,258的二进制要9位才能表示,所以最高位就丢失了。
x只保留了258的低8位,也就是2;丢失的第九位是找不回来的。

所以,要想表示258,就不要定义成char,定义成int存储就好了

最后一个比较合理?我靠,你是学文科的吧?
谁能告诉我他写的
private:
unsigned data_;
这是啥玩意???还有他那int()函数里的c是从哪里冒出来的?

你问的是怎么unsinged char 258转换成int值不变,
直接定义成int不就完事,自己封装一个类,脱裤子放屁。

学了四、五年C++,今天受教了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-10
#include
int
main()
{
unsigned
char
ch='5';
printf("%d\n",ch-'0');//ch的ascii值为48+5,所以减去48(即字符'0')即可。
printf("%d\n",(int)ch-48);//强转(int)ch完后,ch成为int型的53.//因为53才是ch真正在计算机中存储的值。
return
0;
}
其实,你可以将字符ch=‘5’,看做ch=53,这是它的本质。所以,ch是可以直接和数字相加减的。
第2个回答  推荐于2017-09-26

代码为:

#include <iostream>
#if _MSC_VER > 1020
using namespace std;
#endif
int main(void)
{
unsigned char myChar = 'A';
unsigned char *A;
int B;
A = &myChar;
B = static_cast<int>(*A);
cout<<B<<endl;
return 0;
}


还可以:

unsigned char uChar = 0xff;

转换成int iNum = (int)uChar;
这个转换还可是隐式转换, 即int iNum = uChar;

第3个回答  2010-05-25
class myUnsignedChar
{
// ..............
public:
operator int()
{
if(c<256)
return (int)c;
else
return (int)(256+(c-256);
}
//..............

private:
unsigned data_;

//...........
}
第4个回答  2010-05-24
强制类型转换即可。
相似回答