以某种方式在Java中使用无符号字节

时间:2012-12-02 17:42:29

标签: java arduino low-level

我正在尝试创建一个Java程序,为我的Adruino写入文件进行读取。 Arduino是一个简单的8位微控制器板,通过一些额外的硬件,可以逐字节地从SD卡读取文本文件。

事实证明,这比我想象的要困难得多。首先,Java中没有无符号值。由于某种原因甚至不是字节!即使尝试将字节设置为0xFF也可能导致精度错误丢失!这对于这个低级代码来说并不是很有用。

我会使用整数并且只使用正值,但我喜欢在我的很多代码中使用字节溢出对我有利(尽管我可能在数学运算之后用模数做什么)或者最大的问题总之,我不知道如何将一个int作为8位字符添加到稍后写入文件的String中。输出是目前我最大的问题。

那么,基于某些用户输入进行无符号位数学运算的最佳方法是什么,然后将这些位写入文件,就好像每个都是ASCII字符一样?

1 个答案:

答案 0 :(得分:3)

所以,这是它的工作原理。

可以将Java字节视为无符号。唯一有迹象的地方是

  • 常量:只需将它们转换为字节
  • toString和parseInt
  • <,>,> =,< =

签名确实的操作:

  • 除了
  • 减法
  • 乘法
  • 位算术(>>除外,只需使用>>>

要将字节转换为无符号值作为整数,只需使用& 0xFF,并使用(byte)将这些值转换为字节。

或者,如果第三方库可以接受,您可能会对Guava的UnsignedBytes实用程序类感兴趣。 (披露:我向Guava捐款。)