私はuint8_t
,uint16_t
、uint8_t
の順に3つの値を持っています。注文を失うことなく、1つをuint_32
に結合しようとしています。私はここからthis質問を見つけましたが、私はuint_16
値の真ん中に立ち往生しました。例えばuint8_t、uint16_t、uint8_tを組み合わせる
:
uint8_t v1=0x01;
uint16_t v2=0x1001;
uint8_t v3=0x11;
uint32_t comb = 0x01100111;
私は2つの別々のuint8_tにv2
を吐き考えていた。■しかし、それを解決するためにいくつかの簡単な方法があるかもしれません実現。
私の試み:
v2 = 0x1001;
a = v2 & 0xFF;
b = v1 >> 8;
first = ((uint16_t)v1 << 8) | a;
end = ((uint16_t)b << 8) | v3;
comb = ((uint32_t)first << 16) | end;
シフト操作があり、memcpyがあり、新しいプレースメントがいくつかあります。 –