在 java 中,我正在尝试将 & 与过滤器一起使用以获取整数的每个字节,它适用于最后 3 个字节,但第一个抛出数字格式异常

in java i am trying to use & with a filter to get each byte of an integer it works for the last 3 bytes but the first throws a number format exception

您好,在此先感谢您的帮助, 我正在尝试编写一个程序,允许您重新排序整数中的字节我计划用这样的过滤器分隔字节

int number = 3;
    int filter = Integer.parseInt("11111111000000000000000000000000",2);
    return number & filter;

我在四个不同的过滤器

之间写了一个switch语句到select
  1. 第一个字节过滤器 = "11111111000000000000000000000000"
  2. 第二个字节过滤器 = "00000000111111110000000000000000"
  3. 第三个字节过滤器 = "00000000000000001111111100000000"
  4. 第四字节过滤器 = "00000000000000000000000011111111"

第二个到第四个过滤器有效,但第一个过滤器抛出数字格式异常,这与整数的符号有关吗?

像这样分开字节后,我想使用左移和右移来移动字节并使用 OR 按位运算符将它们组合回 32 位整数,但顺序不同 再次感谢您的帮助。

方法Integer.parseInt并不期望您直接将要设置的字节传递给它,而是简单地将传递的字符串解释为二进制数,以便

11111111000000000000000000000000

二进制是

4278190080

十进制。它本身大于整数可以容纳的最大值。

如果你想用二进制模式定义你的 int 变量,那么你可以很容易地做到这一点,标准 java 语法:

// using hex syntax
int firstByteFilter = 0xFF000000;
int secondByteFilter = 0x00FF0000;

等等。 不需要涉及parseInt方法。