當我們讀16位十六進制數爲兩個8我們正在編寫I2C接口, 代碼的形式轉換十六進制MSB和LSB,我們將這些值作爲「未簽名字符」返回。嵌入式C,如何返回的十六進制值在「無符號的字符」爲可用的「整數」型
我們想連接這些MSB和LSB 「字符」值,最後我們需要一個「整數」爲我們進一步的處理值。
例如:下面的2種方法正在返回一個「無符號字符」值,每個
1)
unsigned char i2c_readAck(void)
{
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWEA);
while(!(TWCR & (1<<TWINT)));
return TWDR;
}/* i2c_readAck */
2)
unsigned char i2c_readNak(void)
{
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT)));
return TWDR;
}/* i2c_readNak */
我們必須取MSB和LSB來自這2種方法誰是實際十六進制值需要, 但在無符號的字符類型的值,它串聯,並最終連接值必須轉換爲可用的整數格式,
我們發現對話部分非常棘手, 任何人都可以幫助我們?
保羅,我們只是很新的嵌入式C,所以再次問這個問題,請不介意,所看到的MSB和LSB值是數據類型的「字符「,我們可以直接對它進行按位操作嗎?然後我們可以直接將它存儲在「int」中,而不需要進行類型轉換..不會是類型轉換問題? – 2011-03-31 15:20:02
謝謝你保羅,用於即時回答吧... ..請回答我上面的採石場也 – 2011-03-31 15:25:36
@Balaji KR:char型只是一個小int和它會隱含地促進了上述表達爲int - 我建議!你只需嘗試上面的代碼,看看它是否適合你。 – 2011-03-31 15:32:05