我正在尝试创建一个Java程序,为我的Adruino写入文件进行读取。 Arduino是一个简单的8位微控制器板,通过一些额外的硬件,可以逐字节地从SD卡读取文本文件。
事实证明,这比我想象的要困难得多。首先,Java中没有无符号值。由于某种原因甚至不是字节!即使尝试将字节设置为0xFF也可能导致精度错误丢失!这对于这个低级代码来说并不是很有用。
我会使用整数并且只使用正值,但我喜欢在我的很多代码中使用字节溢出对我有利(尽管我可能在数学运算之后用模数做什么)或者最大的问题总之,我不知道如何将一个int作为8位字符添加到稍后写入文件的String中。输出是目前我最大的问题。
那么,基于某些用户输入进行无符号位数学运算的最佳方法是什么,然后将这些位写入文件,就好像每个都是ASCII字符一样?
答案 0 :(得分:3)
所以,这是它的工作原理。
您可以将Java字节视为无符号。唯一有迹象的地方是
签名确实不的操作:
>>
除外,只需使用>>>
)要将字节转换为无符号值作为整数,只需使用& 0xFF
,并使用(byte)
将这些值转换为字节。
或者,如果第三方库可以接受,您可能会对Guava的UnsignedBytes
实用程序类感兴趣。 (披露:我向Guava捐款。)