将2个字节转换为12位数字?

Vim*_*mzy 0 c byte bit-shift

我正在C语言中工作,并假设我有2个字节的小字节序:

buffer[0] = 0x01; buffer[1] = 0x02; 
Run Code Online (Sandbox Code Playgroud)

如何将以上内容转换为组合的12位数字?因此,合并后应如下所示:

0x0201
Run Code Online (Sandbox Code Playgroud)

Wal*_*erM 5

这是一个16位数字。每个字节为8位。

int i = (buffer[0] & 0xFF) | (buffer[1] << 8);

如果要12位,则此

int i = (buffer[0] & 0xFF) | ((buffer[1] & 0x0F) << 8);

转换回缓冲区

char buffer[2];
buffer[0] = i & 0xFF;
buffer[1] = (i >> 8) & 0x0F;
Run Code Online (Sandbox Code Playgroud)