现在的位置: 首页 > 综合 > 正文

通过I2C读取EEPROM中寄存器的值,获得的值越界

2013年08月10日 ⁄ 综合 ⁄ 共 316字 ⁄ 字号 评论关闭

最近,通过I2C去读取EEPROM中寄存器的值,指定了读取两个字节的长度,同时用short型数据类型存放读出的数据,通过使用0x%x打印出数据,结果是一个四个字节的数据,即0xffffxxxx,前两个字节都是F,后面两个字节是寄存器中的数据。困惑是既然是用一个short型的数据类型来存放两个字节的数据,为什么会变成了四个字节,short型的数据类型应该是存放不下四个字节的数据的。

【问题得到解决】原因是使用short型数据类型存放两个字节的数据时,同时使用0x%x打印数据,系统会自认为数据是有符号位的,所以打印的时候会将两个字节的最高位为1时的数据认为是负数,从而进行强制转换,产生了四个字节的数据,同时前两个字节都是F的情况。

抱歉!评论已关闭.