- public class SubNumTest {
-
- public static void main(String[] args) {
- int x=0x1234567;
- int a = getSubNum(x);
- System.out.println("0x" + Integer.toHexString(a));
- }
- public static int getSubNum(int x) {
- //将x转换为二进制,并以字符串形式返回
- String binaryX = Integer.toBinaryString(x);
- int xLen = binaryX.length();
- //firstLen表示x的二进制表现形式下对应于十六进制第一位数字的位数
- int firstLen = xLen % 4;
-
- int beginIndex;
- int endIndex;
- if (firstLen == 0) {
- beginIndex = 8;
- } else {
- beginIndex = firstLen + 4;
- }
- endIndex = beginIndex + 8;
-
- //subBinaryX为截取后的二进制以字符串形式返回的值
- String subBinaryX = binaryX.substring(beginIndex, endIndex);
- int subBinaryXInt = Integer.parseInt(subBinaryX, 2);
- return subBinaryXInt;
- }
- }
复制代码 将x先转化为二进制形式,并截取第3、4位对应的二进制子串。
其中由于x的第一位数字对应的二进制数有可能省略开头的数字0,所以要先判断第一位数字对应的二进制数的位数。
|