在做一个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;  //正确

 

参考

相关文章:

  • 2021-12-12
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-23
猜你喜欢
  • 2022-02-19
  • 2022-12-23
  • 2022-02-22
  • 2022-01-27
  • 2021-12-10
  • 2022-12-23
  • 2021-09-25
相关资源
相似解决方案