我正在尝试创建一个 Java 程序来编写文件供我的 Adruino 读取。 Arduino 是一个简单的 8 位微 Controller 板,加上一些额外的硬件,可以从 SD 卡逐字节读取文本文件。
事实证明,这比我想象的要难得多。首先,Java 中没有无符号值。由于某种原因甚至没有字节!即使试图将一个字节设置为 0xFF 也会导致可能出现精度丢失错误!这对于这个低级代码不是很有用..
我会使用整数并且只使用正值,但我喜欢在我的很多代码中使用字节溢出来发挥我的优势(尽管我可能可以在数学运算或其他东西之后立即使用模数来做到这一点)和最大的问题最重要的是我不知道如何将 int 作为 8 位字符添加到稍后写入文件的字符串中。输出是目前我最大的问题。
那么,根据某些用户输入进行无符号位数学运算,然后将这些位写入文件(就好像每个位都是 ASCII 字符一样)的最佳方法是什么?
最佳答案
所以,这是它的工作原理。
您可以将 Java 字节视为无符号。唯一标志有所不同的地方是
- 常量:将它们转换为字节
- toString 和 parseInt
- 部门
- <, >, >=, <=
符号不重要的操作:
- 补充
- 减法
- 乘法
- 位运算(
>>>
除外,直接用>>>
代替)
要将字节转换为其无符号值作为整数,只需使用 & 0xFF
,并将其转换为字节使用 (byte)
。
或者,如果可以接受第三方库,您可能会对 Guava 的 UnsignedBytes
感兴趣实用类。 (披露:我为 Guava 做出了贡献。)
关于java - 以某种方式在 Java 中处理无符号字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13671915/