完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
[C] 纯文本查看 复制代码
#pragma pack(1)typedef struct CardInfo{unsigned char Card[5];}CARD_INFO,*pCARD_INFO;typedef struct PackInfo{charSyncHead[4];void*pData;unsigned shortCrcValue;}PACK_INFO,*pPACK_INFO;#pragma pack()pPACK_INFO PACK_A;CARD_INFO PACK_B;//现在想,PACK_A 里面的pData位置填上PACK_B的实际数据unsigned short len;//结构体 PACK_A 在填了数据之后的最终长度搞了好久了没搞明白。在这个pData位置我一直是取得地址,但是没有得到数据。。已经蒙了。 |
|
相关推荐
10个回答
|
|
void*型就是空指针,你爱指啥指啥,需要得到的数据只需要取地址然后强转成void* 型就OK 万事大吉!这种方法在linux底层驱动和内核中非常常见!
|
|
|
|
木有人看一下嘛
|
|
|
|
这个是一种数据流的处理办法。网络传输数据包用的比较多。SyncHead这个是包头,后面定义成void类型可扩展性好,最后应该是个crc校验。因为这段报文长度实际不知道的。需要填充后得到。我举个例子吧,我组装了两个数据包pack1 pack2 。*pdata的len是4和6,地址分别取自data1和data2两个数组那么形式如下。 uint32_t data1[4] = {xxx1 xxx2 xxx3 xxx4 };
uint32_t data2[6] = {xxx1 xxx2 xxx3 xxx4 xxx5 xxx6 }; 数据包是这样: SyncHead void *pdata crc pack1: 0000 xxx1 xxx2 xxx3 xxx4 3745 pack2: 0001 xxx1 xxx2 xxx3 xxx4 xxx5 xxx6 5251 你这个时候取padata->pdata指向就是 32位数组data1或者data2了。但是此时你的结构体的指针是void类型的所以你要转下指针类型才能得到数据。比如你要得到data1[2]数据就要这么写。 ((uint32_t *)&(padata->pdata) +2) 大概就是这样的。 其实c语言里面像memcpy这样的内存拷贝函数都是void *定义指针的,楼主可以看看。 |
|
|
|
不是这样吧,((uint32_t *)&(padata->pdata) +2) , 你这个不是应该是先&取得pdata的地址,而这个pdata本来是一个指针,你&这个指针是获得的是指针变量的地址吧。
|
|
|
|
恩,定义确实是个指针。不过->是引用内容吧。然后再取地址转化指针类型。好像没错吧。我没有代码,楼主可以自己调试下看看。
|
|
|
|
void是没有类型的指针,不是说是空指针
|
|
|
|
有幫PACK_A分配空間嗎?
unsigned short len;//结构体 PACK_A 在填了数据之后的最终长度 這句話是啥意思....結構大小怎麼可能還會改變... PACK_B.Card[2] = 60; PACK_B.Card[3] = 80; PACK_B.Card[4] = 100; PACK_A = (pPACK_INFO)malloc(sizeof(PACK_INFO)); PACK_A->pData =(void *) &PACK_B; printf("%dn", ((unsigned char *)PACK_A->pData)[2]); printf("%dn", ((unsigned char *)PACK_A->pData)[3]); printf("%dn", ((unsigned char *)PACK_A->pData)[4]); |
|
|
|
我这是在STM32平台写的,你这个应该是C++的吧,而且这个(void *) &PACK_B本来是有类型的你还可以强制转到无类型的?
|
|
|
|
我是在VC++打的 但都是C阿...哪段在STM32不能用?
printf 原子不是有提供UART輸出... 而且用debug mode也不需要輸出 直接看memory就能知道對不對了 |
|
|
|
我已经想到并且实现了,但是我觉得你那个printf哪里应该是有问题的。我没试纯属看的,别介意
|
|
|
|
只有小组成员才能发言,加入小组>>
请问下图大疆lightbridge2遥控器主板电源芯片型号是什么?
4481 浏览 1 评论
使用常见的二极管、三极管和mos做MCU和模组的电平转换电路,但是模组和MCU无法正常通信,为什么?
352浏览 2评论
为了提高USIM卡电路的可靠性和稳定性,在电路设计中须注意的点有哪些?
359浏览 2评论
381浏览 2评论
376浏览 2评论
435浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 05:14 , Processed in 1.060021 second(s), Total 94, Slave 78 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号