我在java中需要有关内存位置添加的帮助。
如果当前内存位置为fffffff8
并且偏移量为+10
,则在java中我将获得100000008
的值,但是如果我希望值为{{1}代替0000 0000 0000 0008
,我应该怎么做呢,我现在的代码是否正在优化这个计算?
目前我正在使用的代码如下:
0000 0001 0000 0008
答案 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。