gpt4 book ai didi

c - 在嵌入式C中,如何将 "Unsigned Char"形式的返回十六进制值转换为可用的 "Integer"类型

转载 作者:行者123 更新时间:2023-11-30 14:28:50 25 4
gpt4 key购买 nike

我们正在编写 I2C 接口(interface)的代码,我们将 16 位十六进制数读取为两个 8 位十六进制 MSB 和 LSB,并将这些值作为“Unsigned Char”返回。

我们想要连接这些 MSB 和 LSB “char” 值,最后我们需要一个“Integer” 值进行进一步处理。

例如:以下 2 个方法分别返回一个“Unsigned Char”

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 值,它们是实际需要的十六进制值,但在unsigned char类型中,将其连接起来,最后连接的值必须转换为可用的Integer格式,

我们发现对话部分非常棘手,谁能帮助我们吗?

最佳答案

你只需要这样的东西:

unsigned char msb = ...; // read MSB
unsigned char lsb = ...; // read LSB
int val = (msb << 8) | lsb; // combine MSB and LSB to make an int

关于c - 在嵌入式C中,如何将 "Unsigned Char"形式的返回十六进制值转换为可用的 "Integer"类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5501953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com