-1

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

如果当前内存位置在fffffff8并且有一个偏移量+10,在java中我会得到的值100000008但是如果我想要这个值0000 0000 0000 0008而不是0000 0001 0000 0008,我应该怎么做,我当前的代码是否优化了这个计算?

目前我使用的代码如下:

long a = Long.parseLong("fffffff8",16) + Long.parseLong("10",16);
String x = Long.toHexString(a);
4

2 回答 2

2

既然您似乎想要进行 32 位数学运算,那么您为什么首先使用long呢?

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

int a = 0xfffffff8 + 0x10;

会给你8

正如托马斯所说,除非您从某个地方收到不需要使用的字符串,Long.parseLong()或者Integer.parseInt()因为您可以直接以十六进制形式编写数字文字。

于 2012-06-05T17:21:55.347 回答
1

不知道为什么要在 java 中手动弄乱内存位置,但是如果您需要截断 long,这应该适合您。此外,除非您接受来自用户输入/网络的 longs 并将其作为字符串发送,否则 0x#### 可以代替 parseLong。

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

编辑:在常量的末尾去掉我的 L。

于 2012-06-05T17:21:51.003 回答