类型转换的本质:底层数据是不会变化的,只是机器对它采取了不同的方式去理解,示例如下:
#include "stdafx.h" #include <iostream> using namespace std; int main() { char a[5] = { 0x41,0x02,0x03,0x04,0x05 };//0x41=65 char *b = a; cout << *b << endl; unsigned int c = a[0]; cout << c << endl; system("pause"); return 0; }
运行结果:
让我们看看它们(a[0],b,c)的内存里的数据是否一致:
b的地址跟a一样,
c:
可以看出它们的内存二进制是一样的,只是由于类型不同,解析出来的数据就不同,所以输出不一样。
所以如果我们只要某块内存里的二进制数据而不在意它的解析比如向串口发送数据,我们就只要memcpy即可