我有一个以十六进制定义的整数,例如:
int number = 0x000500000;
是否有可能获得一个数字的值?例如,我想知道第 5 位的值(从右到左阅读,尽管任何一个方向都对我有用)。就像是:
public int valueOfDigit(int value, int position) {
return value at position'th digit of value;
}
我怎样才能做到这一点?(不确定这里的数字是否正确,如有错误请纠正我),
谢谢
我有一个以十六进制定义的整数,例如:
int number = 0x000500000;
是否有可能获得一个数字的值?例如,我想知道第 5 位的值(从右到左阅读,尽管任何一个方向都对我有用)。就像是:
public int valueOfDigit(int value, int position) {
return value at position'th digit of value;
}
我怎样才能做到这一点?(不确定这里的数字是否正确,如有错误请纠正我),
谢谢
嗯,一个十六进制数字是 4 位,所以基本上它只是移位和屏蔽的一种情况:
public static int valueOfDigit(int value, int position) {
return (value >> (position * 4)) & 0xf;
}
您可以使用 Integer 类:
Integer.toHexString(number).charAt(position)
其中位置是您要读取的数字
int digitMask = 0XF * 16 ^ (position - 1);
return (value & digitMask) / (16 ^ (position -1))