我目前正在尝试用 java 编写 MODbus 的串行实现。我遇到的主要问题是,当我将一个字节(或简称)声明为 0xC4(对于一个字节)之类的东西时,我得到一个“精度损失错误”。
有什么办法可以解决这个问题吗?或者我是否被迫将所有数字类型视为比实际长度短 1 位(例如 7 位、15 位、31 位、63 位)?
示例:
byte[] test =
{
0x11,
0x02,
0x00,
0xC4,
0x00,
0x16
};
这会在 0xC4 上发出警告,指出“可能丢失精度”需要字节,已找到 int。
最佳答案
当您说0xC4
时,这是一个大于maximum value for a byte
, 127的整数文字。 ,因此您必须将其显式转换为字节
。
尝试
byte[] test =
{
0x11,
0x02,
0x00,
(byte) 0xC4,
0x00,
0x16
};
关于java - java 声明字节时可能会丢失精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21608595/