Java/Android 添加 2 个字节(如何告诉编译器它不会超过 127?)
Java/Android add 2 bytes (how to tell compiler it won't exceed 127?)
一个的值为 0 或 2,需要与另一个相加。
这是我的方法调用到目前为止的样子
setNumber(new byte[]{(byte) 0xB0, (byte) 52});
根据另一个参数,我想做类似
的事情
setNumber(new byte[]{(byte) 0xB0+parameter, (byte) 52});
所以 paramater
介于 0 和 2 之间。我想这样做是因为我想避免在执行此操作的每一行都放置 if 语句。另外,我认为这是性能方面的最佳方式。
但是,Java 不允许我添加这两个字节 - 我得到 incompatible types Required Byte Found int
。当我直接像
那样简单地添加参数值时,我想要实现的目标确实有效
setNumber(new byte[]{(byte) 0xB0+2, (byte) 52});
因为编译器知道它仍将保留在字节范围内。
那么我怎样才能明确 parameter
永远不会超过 2 的值呢?这段代码肯定会 运行 无论程序发生什么,我只需要它以某种方式编译 - 因为手动添加值是有效的,我希望有一种方法让编译器知道不会有这里有任何问题。
谢谢
您唯一需要做的就是将加法的结果转换为字节。如果值超过 127,将截断位。
setNumber(new byte[]{(byte) (0xB0 + param), (byte) 52});
一个的值为 0 或 2,需要与另一个相加。
这是我的方法调用到目前为止的样子
setNumber(new byte[]{(byte) 0xB0, (byte) 52});
根据另一个参数,我想做类似
的事情setNumber(new byte[]{(byte) 0xB0+parameter, (byte) 52});
所以 paramater
介于 0 和 2 之间。我想这样做是因为我想避免在执行此操作的每一行都放置 if 语句。另外,我认为这是性能方面的最佳方式。
但是,Java 不允许我添加这两个字节 - 我得到 incompatible types Required Byte Found int
。当我直接像
setNumber(new byte[]{(byte) 0xB0+2, (byte) 52});
因为编译器知道它仍将保留在字节范围内。
那么我怎样才能明确 parameter
永远不会超过 2 的值呢?这段代码肯定会 运行 无论程序发生什么,我只需要它以某种方式编译 - 因为手动添加值是有效的,我希望有一种方法让编译器知道不会有这里有任何问题。
谢谢
您唯一需要做的就是将加法的结果转换为字节。如果值超过 127,将截断位。
setNumber(new byte[]{(byte) (0xB0 + param), (byte) 52});