如何将unsigned char 转化为int
比如unsignedchar258的值是2,但是我想要的是258,怎么让int的值是258而不是2感觉最后一个比较合理,感觉适用范围是小于510时可用,但是如果是3011...
比如unsigned char 258 的值是2,但是我想要的是258,怎么让int的值是258而不是2
感觉最后一个比较合理,感觉适用范围是小于510时可用,但是如果是3011呢 展开
感觉最后一个比较合理,感觉适用范围是小于510时可用,但是如果是3011呢 展开
5个回答
展开全部
无法实现的,强制转换后的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++,今天受教了
既然你定义成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++,今天受教了
展开全部
#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是可以直接和数字相加减的。
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是可以直接和数字相加减的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码为:
#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;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
class myUnsignedChar
{
// ..............
public:
operator int()
{
if(c<256)
return (int)c;
else
return (int)(256+(c-256);
}
//..............
private:
unsigned data_;
//...........
}
{
// ..............
public:
operator int()
{
if(c<256)
return (int)c;
else
return (int)(256+(c-256);
}
//..............
private:
unsigned data_;
//...........
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
强制类型转换即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询