unsigned char 和char的转换问题

[复制链接]
7088|9
 楼主| fzb1 发表于 2011-8-2 21:36 | 显示全部楼层 |阅读模式
unsigned char 变量存的是一个char的数据,怎样把这个数据再转换成char类型?
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];
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];
ShakaLeo 发表于 2011-8-2 23:07 | 显示全部楼层
你觉得这两个语句有什么不同吗?
x = (char)buffer[4];
x = buffer[4];
i55 发表于 2011-8-2 22:20

第二句对于某些编译器来说会产生警告,因为类型不同。
易创工作室 发表于 2011-8-3 07:20 | 显示全部楼层
不必这么麻烦吧。接收缓冲区是unsigned char型,但应该知道缓冲区中的哪个是char型的,比如缓冲区中的buffer[4]是接收到的char型数据,那么可以
char x;     
x = (char)buffer[4]; ...
ShakaLeo 发表于 2011-8-2 22:17


有些编译器是不能这样写。3楼的方法比较可靠。
ShakaLeo 发表于 2011-8-3 07:54 | 显示全部楼层
有些编译器是不能这样写。3楼的方法比较可靠。
易创工作室 发表于 2011-8-3 07:20

能否解释一下,为什么不能这样写?
易创工作室 发表于 2011-8-3 17:23 | 显示全部楼层
回楼上。具体的解释你可以百度一下。
ShakaLeo 发表于 2011-8-3 17:28 | 显示全部楼层
算了吧,不用百度了,除非它不是C编译器,否则不会不能这么写的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

100

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部