반응형
두 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
반응형
'programing' 카테고리의 다른 글
MySQL 및 Python으로 데이터베이스가 자동으로 업데이트되지 않음 (0) | 2023.10.18 |
---|---|
0으로 구분: C 및/또는 C++에 정의되지 않은 행동 또는 구현? (0) | 2023.10.18 |
x.jade 부분을 각도로 렌더링하는 것이 가능합니까? (0) | 2023.10.18 |
로컬 테이블에서 참조 테이블로의 SQL 사용 값이 다른 DB에 있음 (0) | 2023.10.18 |
데이터베이스 테이블을 스파크 데이터 프레임으로 읽기 위해 Apache Spark와 MySQL을 통합하는 방법은 무엇입니까? (0) | 2023.10.13 |