如何将unsigned char 转化为int

比如unsignedchar258的值是2,但是我想要的是258,怎么让int的值是258而不是2感觉最后一个比较合理,感觉适用范围是小于510时可用,但是如果是3011... 比如unsigned char 258 的值是2,但是我想要的是258,怎么让int的值是258而不是2
感觉最后一个比较合理,感觉适用范围是小于510时可用,但是如果是3011呢
展开
 我来答
xiaohaofancy
推荐于2017-09-14 · TA获得超过113个赞
知道答主
回答量:51
采纳率:0%
帮助的人:59.9万
展开全部
无法实现的,强制转换后的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++,今天受教了
崔念珍茂煊
2019-04-10 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:33%
帮助的人:612万
展开全部
#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是可以直接和数字相加减的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秀乞群群
推荐于2017-09-26 · TA获得超过19万个赞
知道顶级答主
回答量:6.7万
采纳率:91%
帮助的人:2.4亿
展开全部

代码为:

#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;

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sohu2000000

2010-05-25 · TA获得超过237个赞
知道小有建树答主
回答量:126
采纳率:0%
帮助的人:120万
展开全部
class myUnsignedChar
{
// ..............
public:
operator int()
{
if(c<256)
return (int)c;
else
return (int)(256+(c-256);
}
//..............

private:
unsigned data_;

//...........
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
feverGreen
2010-05-24 · 超过30用户采纳过TA的回答
知道答主
回答量:106
采纳率:0%
帮助的人:69.6万
展开全部
强制类型转换即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式