3

我有一个以十六进制定义的整数,例如:

int number = 0x000500000;

是否有可能获得一个数字的值?例如,我想知道第 5 位的值(从右到左阅读,尽管任何一个方向都对我有用)。就像是:

public int valueOfDigit(int value, int position) {
    return value at position'th digit of value;
}

我怎样才能做到这一点?(不确定这里的数字是否正确,如有错误请纠正我),

谢谢

4

3 回答 3

8

嗯,一个十六进制数字是 4 位,所以基本上它只是移位和屏蔽的一种情况:

public static int valueOfDigit(int value, int position) {
    return (value >> (position * 4)) & 0xf;
}
于 2012-08-31T17:43:33.657 回答
2

您可以使用 Integer 类:

Integer.toHexString(number).charAt(position)

其中位置是您要读取的数字

于 2012-08-31T17:46:18.307 回答
1
int digitMask = 0XF * 16 ^ (position - 1);
return (value & digitMask) / (16 ^ (position -1))
于 2012-08-31T17:44:36.407 回答