繁体   English   中英

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

[英]somehow working with unsigned bytes in Java

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

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

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

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

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

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

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

操作,其中的符号性并不重要:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM