比如位元組轉數字的時候可以用
union
{
int i;
BYTE b[4];
}
然后把位元組賦值給b[4]后就直接得到了i。
那么,可不可以決議一幀資料的時候也用類似的方式呢?
我試了一下
也是可以的。然后把int i[2]換成一個結構體,然后位元組賦值之后就得到一個結構體,結構體里的引數就都算出來了。
union
{
int i[2];
BYTE b[8];
}
我現在有一幀資料,都是4位元組代表一個整型,但是其中有一個數的長度是不固定的。怎樣可以套用上面那種方式呢?
我不想自己寫回圈一個一個數的決議,感覺麻煩有有點low
uj5u.com熱心網友回復:

都是按協議,手工讀1個位元組,讀2個位元組,讀4個位元組的干活。。
uj5u.com熱心網友回復:
就用指標唄#pragma pack(push, 1)
typedef union _tagUDW_t
{
int i;
BYTE b[4];
}UDW, *LPUDW;
#pragma pack(pop)
UDW *p = ;
p->b[0] = xx;
p->i ++;
p++;
uj5u.com熱心網友回復:
根據我的理解,你是問:union xx
{
int i;
BYTE b[1]; // b的有效資料長度不定,比如實際收到10位元組
};
b實際存盤的資料沒有超出sizeof(int)就可以,超出了就有資料丟失、記憶體損壞的可能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/16935.html
標籤:基礎類
