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

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

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

你可能感兴趣的:(工作杂记)