如何解决在 Java 中,我试图将 & 与过滤器一起使用来获取整数的每个字节,它适用于最后 3 个字节,但第一个会引发数字格式异常
嗨,提前感谢您的帮助, 我正在尝试编写一个程序,该程序将允许您对整数中的字节进行重新排序我计划用这样的过滤器分隔字节
int number = 3;
int filter = Integer.parseInt("11111111000000000000000000000000",2);
return number & filter;
我写了一个 switch 语句来在四种不同的过滤器之间进行选择
- 第一个字节过滤器 = "11111111000000000000000000000000"
- 第二个字节过滤器 = "00000000111111110000000000000000"
- 第三个字节过滤器 = "00000000000000001111111100000000"
- 第四字节过滤器 = "00000000000000000000000011111111"
第二个到第四个过滤器工作但第一个抛出数字格式异常这与整数的符号有关吗?
像这样分隔字节后,我想使用左移和右移来移动字节并使用 OR 按位运算符将它们组合回 32 位整数,但顺序不同 再次感谢您的帮助。
解决方法
Integer.parseInt
方法不希望您直接将要设置的字节传递给它,而是简单地将传递的字符串解释为二进制数,以便
11111111000000000000000000000000
二进制是
4278190080
十进制。它本身大于整数可以容纳的最大值。
如果你想用二进制模式定义你的 int 变量,那么你可以很容易地用标准的 java 语法来做:
// using hex syntax
int firstByteFilter = 0xFF000000;
int secondByteFilter = 0x00FF0000;
等等。 不需要涉及到 parseInt 方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。