打印

unsigned char 和char的转换问题

[复制链接]
6073|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fzb1|  楼主 | 2011-8-2 21:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
i55| | 2011-8-2 21:39 | 只看该作者
不理解你说的神马意思。一般如果不涉及运算,无需强制类型转化,直接赋值就行。

使用特权

评论回复
板凳
fzb1|  楼主 | 2011-8-2 22:03 | 只看该作者
利用网络传递一个char类型数据。比如利用串口传递一个char数据。传递一帧数据中有unsigned char类型,也有char类型。接收缓冲区是unsigned char类型。这样通过串口传递过来的char就存在unsigned char类型的变量了。有一个方法:采用指针传递变量值。比如传递的数据是char x=0xff;定义一个unsigned char *pp;
pp=(unsigned char *) &x; 发送时,发送*pp,这样就把0xff发送出去了。接收后,采用同样的处理方法,unsigned char y; y存的数据是0xff。pp=(unsigned char *) &x; *pp=y。则x=0xff。这样是否正确?

使用特权

评论回复
地板
ShakaLeo| | 2011-8-2 22:17 | 只看该作者
不必这么麻烦吧。接收缓冲区是unsigned char型,但应该知道缓冲区中的哪个是char型的,比如缓冲区中的buffer[4]是接收到的char型数据,那么可以
char x;     
x = (char)buffer[4];

使用特权

评论回复
5
i55| | 2011-8-2 22:20 | 只看该作者
不必这么麻烦吧。接收缓冲区是unsigned char型,但应该知道缓冲区中的哪个是char型的,比如缓冲区中的buffer[4]是接收到的char型数据,那么可以
char x;     
x = (char)buffer[4]; ...
ShakaLeo 发表于 2011-8-2 22:17

你觉得这两个语句有什么不同吗?
x = (char)buffer[4];
x = buffer[4];

使用特权

评论回复
6
ShakaLeo| | 2011-8-2 23:07 | 只看该作者
你觉得这两个语句有什么不同吗?
x = (char)buffer[4];
x = buffer[4];
i55 发表于 2011-8-2 22:20

第二句对于某些编译器来说会产生警告,因为类型不同。

使用特权

评论回复
7
易创工作室| | 2011-8-3 07:20 | 只看该作者
不必这么麻烦吧。接收缓冲区是unsigned char型,但应该知道缓冲区中的哪个是char型的,比如缓冲区中的buffer[4]是接收到的char型数据,那么可以
char x;     
x = (char)buffer[4]; ...
ShakaLeo 发表于 2011-8-2 22:17


有些编译器是不能这样写。3楼的方法比较可靠。

使用特权

评论回复
8
ShakaLeo| | 2011-8-3 07:54 | 只看该作者
有些编译器是不能这样写。3楼的方法比较可靠。
易创工作室 发表于 2011-8-3 07:20

能否解释一下,为什么不能这样写?

使用特权

评论回复
9
易创工作室| | 2011-8-3 17:23 | 只看该作者
回楼上。具体的解释你可以百度一下。

使用特权

评论回复
10
ShakaLeo| | 2011-8-3 17:28 | 只看该作者
算了吧,不用百度了,除非它不是C编译器,否则不会不能这么写的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

100

帖子

0

粉丝