如果值无法容纳,则设置字节



我想将字节设置为最大值或最小值,如果我尝试分配的值更大。有没有更好的方法来做到这一点,而不是检查if语句?

例:

int[] arr = new int[128]; // assume int array is filled with random values
byte[] arr2 = new byte[128]; 
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 127) {
arr2[i] = 127;
} else if (arr[i] < -128) {
arr2[i] = -128;
} else {
arr2[i] = arr[i];
}
}

有没有办法用按位运算替换 if/else 语句? 或者有没有更智能/更快的方法来做到这一点?

您可以链接Math.min(int, int)Math.max(int, int)调用。喜欢

arr2[i] = (byte) Math.min(127, Math.max(-128, arr[i]));

如果arr[i]小于-128则需要-128。如果结果大于127则需要127。这应该涵盖您的所有情况。

最新更新