在做一个Android app和arm板子交互的程序中,遇到一个问题,Java byte中无法直接存储大于0x7E的十六进制,但是C语言却可以。
出现这个状况的原因是:Java中是byte存储的是有符号数,且没有提供无符号的byte类型,因此在其表示范围为-128-127之间。
处理方法:对于大于0x7E数,我们使用内联转换(inline conversion)进行处理后存入,如下所示。
private byte test_01 = (byte)0x7E; //正确
private byte test_02 = (byte)0x7E; //正确
private byte test_03 = 0x80; //错误
private byte test_04 = (byte)0x80; //正确