java - java 声明字节时可能会丢失精度

标签 java byte precision

我目前正在尝试用 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/

相关文章:

java - 查找所有文件夹和子文件夹内容并像结构一样显示(Java)

go - 遍历所有可能的字节

swift - 如何在 Swift 中读取 3 个字节中的 19 位?

r - 将 NA 值传递给原始和返回

整个列表上的 Java 8 流计算

java - 调用 MessageSource#getMessage 时如何修复 'NoSuchMessageException'

.net - Double 和 Decimal 的精度(在 .NET 中)

java - 多线程、性能和精度考虑

java - IntelliJ IDEA 将 final 添加到自动生成的 setter

r - R 中浮点精度的极端数值