我在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