programing

두 unint8_tas unint16_t 결합

goodsources 2023. 10. 18. 22:02
반응형

두 unint8_tas unint16_t 결합

나는 다음의 자료를 가지고 있습니다.

uint8_t d1=0x01; 
uint8_t d2=0x02; 

나는 그것들을 합치고 싶습니다.uint16_t~하듯이

uint16_t wd = 0x0201;

어떻게 하면 되죠?

비트 와이즈 연산자를 사용할 수 있습니다.

uint16_t wd = ((uint16_t)d2 << 8) | d1;

이유:

 (0x0002 << 8) | 0x01 = 0x0200 | 0x0001 = 0x0201

가장 간단한 방법은 다음과 같습니다.

256U*d2+d1

이것은 아주 간단합니다.깁스도 필요 없고, 일시적인 변수도 필요 없고, 흑마법도 필요 없습니다.

uint8_t d1=0x01; 
uint8_t d2=0x02; 
uint16_t wd = (d2 << 8) | d1;

d2는 항상 양의 값이고 오버플로우가 없는 한 항상 잘 정의된 동작입니다.d2 <= INT8_MAX.

(INT8_MAX는 stdint.h에 있음).

(uint16_t)((d2 << 8) + (d1 & 0x00ff))

언급URL : https://stackoverflow.com/questions/15249791/combining-two-uint8-t-as-uint16-t

반응형