我在C工作,并承担我有2个字节的小尾数:将2个字节转换为12位数字?
buffer[0] = 0x01; buffer[1] = 0x02;
我怎么能转换到上述组合12位的数字?所以结合它应该看起来后像:
0x0201
我在C工作,并承担我有2个字节的小尾数:将2个字节转换为12位数字?
buffer[0] = 0x01; buffer[1] = 0x02;
我怎么能转换到上述组合12位的数字?所以结合它应该看起来后像:
0x0201
这是一个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;
如果buffer[]
是有符号类型使用
int twelve_bit1 = ((buffer[1] & 0xF) << 8) | (buffer[0] & 0xFF);
或
int twelve_bit2 = ((buffer[1] & 0xF) << 8) | (unsigned char) buffer[0];
或
int twelve_bit3 = ((buffer[1] & 15) * 256) | buffer[0] & 255;
所有产生类似的代码。
'0x0201'看起来像一个16位数字。你的意思是'0x201'? – chux
您有2个字节,即16位。 12位是1和半字节。 3个字节将是24位(全部假设为8位字节)。我认为你需要澄清你想要做什么。 – nos
是'char','unsigned char','uint8_t'或其他类型的'buffer []'类型吗? – chux