Shi*_*hab 1 c casting structure pragma
我有一个函数UartSend()通过uart将数据发送到网络.它需要参数unsigned char和一个整数
UartSend(unsigned char *psend_data,int length);
Run Code Online (Sandbox Code Playgroud)
我想通过这个功能发送一个结构
#pragma pack(push, 1)
struct packet
{
int a;
char b[3];
...
}PacketData;
#pragma pack(pop)
Run Code Online (Sandbox Code Playgroud)
如何将此结构转换为unsigned char以通过UartSend发送此数据?谢谢..
如果unsigned char *
您的尺寸正确,您可以简单地投射到:
PacketData pkt;
UartSend((unsigned char *)&pkt, sizeof(pkt));
Run Code Online (Sandbox Code Playgroud)
unsigned char *
在这种情况下,真正意味着字节.
当然,在连接的另一端,您需要合并程序逻辑以重新转换为PacketData
(或某些类似的结构).
编辑:但是,请注意,正如@WhozCraig在评论中指出的那样,如果您的目标平台与源平台不同,则需要考虑对齐问题(或者,依赖于GNU扩展__packed__
)
归档时间: |
|
查看次数: |
6293 次 |
最近记录: |