繁体   English   中英

在 java 中,我尝试使用 & 与过滤器一起获取 integer 的每个字节,它适用于最后 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

嗨,提前感谢您的帮助,我正在尝试编写一个程序,该程序将允许您重新排序 integer 中的字节我计划用这样的过滤器分隔字节

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

我在四个不同的过滤器之间给 select 写了一个 switch 语句

  1. 第一个字节过滤器=“11111111000000000000000000000000”
  2. 第二个字节过滤器=“00000000111111110000000000000000”
  3. 第三个字节过滤器=“00000000000000001111111100000000”
  4. 第四个字节过滤器=“00000000000000000000000011111111”

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

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

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

11111111000000000000000000000000

二进制是

4278190080

在十进制系统中。 它本身大于 Integer 可以容纳的最大值。

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

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

等等。 无需涉及 parseInt 方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM