使用截断结果添加十六进制数字

时间:2012-06-05 17:12:48

标签: java hex

我在java中需要有关内存位置添加的帮助。

如果当前内存位置为fffffff8并且偏移量为+10,则在java中我将获得100000008的值,但是如果我希望值为{{1}代替0000 0000 0000 0008,我应该怎么做呢,我现在的代码是否正在优化这个计算?

目前我正在使用的代码如下:

0000 0001 0000 0008

2 个答案:

答案 0 :(得分:2)

由于您似乎想要进行32位数学运算,为什么首先使用long

如果你只使用int,你会得到你想要的东西:

int a = 0xfffffff8 + 0x10;

会给你8

正如托马斯所说,除非你从somwhere处获得字符串,否则不需要使用Long.parseLong()Integer.parseInt(),因为你可以直接以十六进制形式编写数字文字。

答案 1 :(得分:1)

不确定为什么要在java中手动搞乱内存位置,但是如果你需要截断长,这应该对你有用。此外,除非您接受来自将其作为字符串发送的用户输入/网络的长片,否则0x ####将起作用而不是parseLong。

long a = 0xfffffff8L + 0x10L;
long b = a & 0xffffffffL;

编辑:在常数的两端留下我的L's。