簡體   English   中英

如何從 C 中的 U8 數組中獲取 U16 變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM