【发布时间】:2016-04-24 02:49:42
【问题描述】:
给定一个 12 位的任意十六进制数,设置第 n 位值的最快方法是什么?例如,
0x100000000000
如何设置第10位为2,即102000000000。
查看java doc后,我认为可以在java中定义数字为
int hex = 0x100000000000;
我需要将其转换为 0x102000000000。我尽量避免使用任何现有的类,例如 BitSet,因为代码必须用 java 和纯 javascript 编写。谢谢
【问题讨论】:
-
@CMZS 你至少应该离开
0x。否则会令人困惑。 -
我已更改问题描述。它是一个十六进制数,有 12 位数字。每个数字的值可能从 0 到 F。
-
在 Java(和大多数语言)中确实没有“十六进制数”这样的东西。这只是写下整数常量的一种方法,并不是它自己的特殊类型“保持为十六进制数”。因此,在“十六进制数”中设置一个位只是在
int或long或其他中设置一个位 -
int不够大,因为它只有 32 位长。 -
我建议您在谈论十六进制数字时使用术语 hexit 或 nybble 而不是 digit,因为它们比 digit 不那么模棱两可。此外,您应该更喜欢从零开始的编号,以与通常的位编号方式保持一致,因此
0x102000000000中的 2 是十六进制 9,而不是 10。
标签: java hex bit-manipulation