注册 登录
编程论坛 VC++/MFC

BYTE,char,int之间的赋值

喜鹊王子 发布于 2013-03-17 11:50, 1314 次点击
CAN接口卡函数库(用于VC上位机):
VCI_CAN_OBJ 结构体在VCI_Transmit 和VCI_Receive 函数中被用来传送CAN 信息帧。
typedef struct _VCI_CAN_OBJ {
UINT ID;
UINT TimeStamp;
BYTE TimeFlag;
BYTE SendType;
BYTE RemoteFlag;
BYTE ExternFlag;
BYTE DataLen;
BYTE Data[8];
BYTE Reserved[3];
} VCI_CAN_OBJ, *PVCI_CAN_OBJ;

我用单片机向上位机发送字符数据
unsigned char ucMsgData[8]={12,22,32,42,52,62,72,82}的时候,上位机接收到Data[8]={12,22,32,42,52,62,72,82},我在上位机定义一个整形数组int data[8],令data[2]=DATA[2];

1.那么data[2]就等于整形的32,为什么?是不是因为32其实是AscII码?
2.BYTE型的DATA能直接用char赋值?是不是因为BYTE就是无符号字符型?
1 回复
#2
yuccn2013-03-17 12:06
1.那么data[2]就等于整形的32,为什么?是不是因为32其实是AscII码?
32 你理解成它是数据就行了。int的32 和BYTE的的32 和AscII 的32 都是数据32 ,不同数据类型主要原因是数据单位大小和存储格式可能不一样而已。


 2.BYTE型的DATA能直接用char赋值?是不是因为BYTE就是无符号字符型?
能的,只要数据单位的大小(sizeof)一样,就可以不丢失精度了,BYTE其实是“typedef unsigned char       BYTE;”
1