variable uint8_t uint16_t significa que libreria c

significa - Combinando dos uint8_t como uint16_t



uint8_t libreria (3)

Tengo los siguientes datos

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

Quiero combinarlos como uint16_t as

uint16_t wd = 0x0201;

¿Cómo puedo hacerlo?


Esto es bastante simple. No necesita lanzamientos, no necesita variables temporales, no necesita magia negra.

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

Este es siempre un comportamiento bien definido ya que d2 siempre es un valor positivo y nunca se desborda, siempre que d2 <= INT8_MAX .

(INT8_MAX se encuentra en stdint.h).


La forma más sencilla es:

256U*d2+d1


Puede utilizar operadores bitwise:

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

Porque:

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