获取十六进制数的数字

3
int n= 0x234;

这实际上会将564存储在n中,但如果我想访问并操作2,3和4怎么办?


1
你想如何对它们进行操作? - Rohit Jain
1
使用位移/位掩码...但你会对f做什么? - fge
假设我想要将两个十六进制数相加,但不希望将它们作为整数相加,并且希望以十六进制形式打印结果。 - George Irimiciuc
在十六进制或十进制中加上一个数字将得到相同的结果。

0x123 + 0x345 = 0x468

291 + 837 = 11280x468 = 1128
- wbest
2个回答

6

十六进制数非常容易获取:要访问数字k的值,请从右侧进行计数,将该值向右移动4*k,然后使用掩码& 0x0F

int n= 0x234;
int digit2 = (n >> 2*4) & 0x0F; // Gives you 2
int digit1 = (n >> 1*4) & 0x0F; // Gives you 3
int digit0 = (n >> 0*4) & 0x0F; // Gives you 4

啊,还有一件事。我怎么能得到我的数字n的长度呢?比如说,我想循环并获取每个数字,但是不知道它的长度。 - George Irimiciuc
@GeorgeIrimiciuc 从右边开始,抓住最后一位数字,然后将数字向右移动四位。一旦原始数字变为零,即可完成操作。 - Sergey Kalinichenko
真的,我没有想到那个。 - George Irimiciuc

0
这样怎么样:
ByteBuffer bb = ByteBuffer.allocate(4);
bb.putInt(0x234);
for (byte b : bb.array()) {
    System.out.print(String.format("%02X ", b) + " "); //00 00 02 34
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接