工具/软件:TI C/C++编译器
您好!
我需要将数据从结构复制到 char 数组。
我使用了以下代码。
typedef 结构体 TPR_MM1
{
最大浮动;
最小浮动;
浮点 val;
}TPR_MM1;
TPR_MM1 tpmm、tptest;
memcpy ((unsigned char *) conf_data、(unsigned char *)&tpmm、sizeof (TPR_mm)); //将结构复制到 char 数组
memcpy ((unsigned char *)&tptest、(unsigned char *) copy_data、sizeof (TPR_MM1)); //将字符数组复制到 结构。
但它在观察窗口中显示了奇怪的数据。 经过一些研究后、我发现结构声明中需要属性 packed。
typedef 结构体 TPR_MM1
{
最大浮动;
最小浮动;
浮点 val;
}TPR_MM1 __attribute__((((packed);
但它有一些用处。 此外、在编译器中还会出现"属性打包不适用于此处"之类的问题
首先、当我在第一个 memcpy 之后检查观察窗口时、字符数组中的数据会很奇怪、如。 每个元素为1个字节、但观察窗口在每个元素中显示两个字节信息
字节顺序。
char 数组如何在具有字节对齐存储器的每个元素中存储16位值。 我怀疑问题是 char 表示为16位的字。
请帮助我理解并解决此问题。
此致、
Stalin
