![](/img/trans.png)
[英]How do you merge two arrays of u8 and u16 elements into an array of u8 elements?
[英]How to get a U16 variable from a U8 array in C?
我正在將數據從一個 PIC32 板發送到另一個。 請注意,板之間的通信完美無缺。 這是我的代碼:Main.c
BYTE *dataVenantMaitre;
U16 nombreGoutteRecu;
BYTE IdTrameVenantMaitre;
BYTE LongueurDataVenantMaitre;
//Bla Bla
IdTrameVenantMaitre = GetIdTrameVenantMaitre(COM_PERIPH);
LongueurDataVenantMaitre = GetTailleDataTrameVenantMaitre(COM_PERIPH);
dataVenantMaitre = GetDataTrameVenantMaitre(COM_PERIPH);
switch (IdTrameVenantMaitre)
{
// Bla Bla
case ID_RFID_SET_NOMBRE_GOUTTES :
MyMemcpy(&nombreGoutteRecu, dataVenantMaitre, sizeof(nombreGoutteRecu));
RepondreAck();
break;
}
another.c(function獲取從另一塊板接收的數據)
BYTE *GetDataTrameVenantMaitre(U16 num_com)
{
return dialogue[num_com_to_dial[num_com]].trame.data;
}
我在這里的問題是:我可以成功獲取以 1 BYTE 編碼的數據,但是當嘗試獲取以 2 BYTE 編碼的數據“nombreGoutteRecu”時,我只得到第一個 BYTE 而另一個總是00. 我是 C 編程的初學者,所以我在這里找不到確切的問題。 請幫忙!
更通用:
U16 getU16(const U8 *u8, size_t pos)
{
return u8[pos] + (u8[pos + 1] << 8);
}
如果字節序相同(在許多平台上它將生成更高效的代碼):
U16 getU16_1(const U8 *u8, size_t pos)
{
U16 val;
memcpy(&val, u8 + pos, sizeof(val));
return val;
}
一切都很好,但還是謝謝你。 我實際上只從發送板發送了一個字節,這就是為什么我只收到一個字節而另一個字節只是自動填充。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.