char * 转换成 unsigned char* ??

lianghuaizong 2007-12-24 04:07:30
如题,怎样进行转换??

char* data;
unsigned char* unData;

如果 char* data = -4; 转换成 unsigned char* unData = ??
...全文
2550 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
tutu_cloud 2007-12-25
  • 打赏
  • 举报
回复
1. char和unsigned char不是一回事。char是否有符号由编译器决定,unsigned char一定没有符号
2. 楼主这个问题和char与unsigned char是否一致没有什么太大关系。在这里其实是两个不同类型的指针转换。
3. char* data = -4的写法有问题,不能把整形赋给指针变量。但指针变量的确允许放入负值
4. 指针类型的变量的内存布局都一致,而且char和unsigned char不存在继承关系,因此强制转换没有问题,而且unData还是等于-4
5. 但如果要使用unData里所指向的字符,则结果由编译器决定。不过大多数结果是将原来的字符(无论是否有符号)当作无符号字符处理。
dtor 2007-12-25
  • 打赏
  • 举报
回复
char* 和 unsigned char* 都没有符号位一说,没必要转,如果定要转当然没有问题。
星光伴月 2007-12-24
  • 打赏
  • 举报
回复
char *data;
unsigned char *udata;

*data = -4;
udata = (unsigned char*) data;//强制转换没有问题.
lianghuaizong 2007-12-24
  • 打赏
  • 举报
回复
谢谢各位了 ,祝大家圣诞节快乐!
tangshuiling 2007-12-24
  • 打赏
  • 举报
回复
强转就行,不会有数据丢失的问题!
lianghuaizong 2007-12-24
  • 打赏
  • 举报
回复
这么说吧,现在有个变量是 char* 类型的,但是我现在要以 unsigned char* 来使用?

需要做什么转换,还是直接强制转化就可以了??
飞哥 2007-12-24
  • 打赏
  • 举报
回复
char* data = -4 //??
tangshuiling 2007-12-24
  • 打赏
  • 举报
回复
楼主看以下简单代码:

#include <iostream>
using namespace std;
int main()
{
char *p=new char;
unsigned char* t=new unsigned char;
int i=-4;
*p=-4; //p字符指针存储了值为-4,而-4的十六进制为0xfffffffc因此*p的值为十六进制的fc
*t=-4; //同上!
cout<<*p<<endl<<*t;//*p和*t均为fc不可见字符
delete p;
delete t;
return 0;
}
lianghuaizong 2007-12-24
  • 打赏
  • 举报
回复
data = -4 转换后成 252 ,这个正确不???
yuyunliuhen 2007-12-24
  • 打赏
  • 举报
回复
char* data = -4 //??

char <===>unsigned char
lianghuaizong 2007-12-24
  • 打赏
  • 举报
回复
那如果里面保存的是数字,怎么解决??怎样才能保证数据不丢失??
dnboy 2007-12-24
  • 打赏
  • 举报
回复
char与unsigned char是没有区别的,只有数字类型的unsigned和signed才有区别
楼主的char * data = -4这种写法是错误的

65,202

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧