【发布时间】:2013-02-22 07:33:37
【问题描述】:
我有一个函数 UartSend() 通过 uart 向网络发送数据。它需要参数 unsigned char 和一个整数
UartSend(unsigned char *psend_data,int length);
我想通过这个函数发送一个结构
#pragma pack(push, 1)
struct packet
{
int a;
char b[3];
...
}PacketData;
#pragma pack(pop)
如何将此结构转换为 unsigned char 以通过 UartSend 发送此数据? 谢谢..
【问题讨论】:
-
您是否尝试简单地将
packet转换为unsigned char*?在您的情况下,它可能存在对齐问题...... -
决定你想要的数据格式。这称为协议。在您的情况下,您可能希望将数据作为 32 位或 64 位大端整数发送,后跟三个字符。您将把这些数据“构建”到一个缓冲区中,然后发送它。客户端将收到此信息,然后从数据中重建原始结构。发送直接转换可能会引入过多的对齐和打包问题,老实说,您希望避免这些问题,尤其是当客户端可能运行与发送者不同的平台或内存架构时。
标签: c casting structure pragma