3

我正在尝试创建一个 Java 程序来编写文件供我的 Adruino 读取。Arduino 是一个简单的 8 位微控制器板,并带有一些额外的硬件,可以逐字节读取 SD 卡中的文本文件。

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

我会使用整数并且只使用正值,但我喜欢在我的很多代码中使用字节溢出来发挥我的优势(尽管我可能会在数学运算或其他东西之后立即使用模数来做到这一点),最大的问题是我不知道如何将 int 作为 8 位字符添加到稍后写入文件的 String 中。输出是我目前最大的问题。

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

4

1 回答 1

3

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

可以将 Java 字节视为无符号。标志产生影响的唯一地方是

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

签名无关紧要的操作:

  • 添加
  • 减法
  • 乘法
  • 位算术(除了>>,只用>>>代替)

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

或者,如果可以接受第三方库,您可能会对 Guava 的UnsignedBytes实用程序类感兴趣。(披露:我为 Guava 做出了贡献。)

于 2012-12-02T17:56:12.850 回答