吐血调了一个晚上,结果是unsigned char 和char的问题。
当类型是char型,凡是0x80以上,即最高位是1的数据,通过"%02x"打印后会在前面填充6个‘f’,即变成ffffff87这样的数据。
而换成unsigned char型则打印正常。
但是在ARM的linux上之前没有遇到这样的问题。看来对于平台还有编译器还是很有关系的,但是现在的疑惑就是%02x其中的2代表只有2位数据,但是现在却答应了8位,诡异。
吐血调了一个晚上,结果是unsigned char 和char的问题。
当类型是char型,凡是0x80以上,即最高位是1的数据,通过"%02x"打印后会在前面填充6个‘f’,即变成ffffff87这样的数据。
而换成unsigned char型则打印正常。
但是在ARM的linux上之前没有遇到这样的问题。看来对于平台还有编译器还是很有关系的,但是现在的疑惑就是%02x其中的2代表只有2位数据,但是现在却答应了8位,诡异。