java - 以某种方式在 Java 中处理无符号字节

标签 java arduino low-level

我正在尝试创建一个 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/

相关文章:

android - 如何在 android 上以编程方式取消配对或删除配对的蓝牙设备?

rust - 如何将位图切片的自定义图像实现转换为 PNG?

javascript - 为什么字符串文字在 JavaScript 中被视为原始类型?

ios - 开发人员可以访问的最低级别的官方触摸输入 API 是什么? (苹果手机)

java - Spring Boot 2 中缺少 TomcatEmbeddedServletContainerFactory

java - 如何从小程序打开新的小程序窗口

c++ - Arduino:从两个十进制字符串中获取十六进制值

python - 尝试使用按钮打破 python 2.7 tkinter 中的 while 循环串行 readline () 函数。从 aruduino Mega 读取数据

java - 如何在 Java 小程序中打开模态对话框?

java - 如何将不同名称的字符串添加在一起