java,设置十六进制数的位值
java, set bit values on hex number
给定一个 12 位的任意十六进制数,设置第 n 个数字值的最快方法是什么?例如,
0x100000000000
如何设置第10位为2,即102000000000。
查看java文档后,我认为java中的数字可以定义为
int hex = 0x100000000000;
我需要将其转换为 0x102000000000。我尽量避免使用任何现有的 类,例如 BitSet,因为代码必须用 java 和纯 java 脚本编写。谢谢
下面是我在 Java 中使用按位运算符的方法。在Javascript.
中应该很相似
public static void main(String[] args)
{
long hex = 0x2222222222222222L;
System.out.printf("0x%x", replaceDigit(hex, 10, 1));
}
public static long replaceDigit(long originalValue, int digitPosition, int replacementDigit)
{
// Clear the 4 bits (i.e. 1 digit) at the position requested
originalValue &= ~(0x0FL << digitPosition * 4);
// Now put the replacement value at the position requested
originalValue |= (long) replacementDigit << digitPosition * 4;
return originalValue;
}
给定一个 12 位的任意十六进制数,设置第 n 个数字值的最快方法是什么?例如,
0x100000000000
如何设置第10位为2,即102000000000。
查看java文档后,我认为java中的数字可以定义为
int hex = 0x100000000000;
我需要将其转换为 0x102000000000。我尽量避免使用任何现有的 类,例如 BitSet,因为代码必须用 java 和纯 java 脚本编写。谢谢
下面是我在 Java 中使用按位运算符的方法。在Javascript.
中应该很相似public static void main(String[] args)
{
long hex = 0x2222222222222222L;
System.out.printf("0x%x", replaceDigit(hex, 10, 1));
}
public static long replaceDigit(long originalValue, int digitPosition, int replacementDigit)
{
// Clear the 4 bits (i.e. 1 digit) at the position requested
originalValue &= ~(0x0FL << digitPosition * 4);
// Now put the replacement value at the position requested
originalValue |= (long) replacementDigit << digitPosition * 4;
return originalValue;
}