[英]Adding hexadecimal numbers with a truncated result
我需要有关内存位置添加的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);
既然您似乎想进行32位数学运算,那么为什么首先要使用long
?
如果您只使用int
,那么您将得到想要的:
int a = 0xfffffff8 + 0x10;
会给你8
。
就像托马斯所说的那样,除非您是从某处处理字符串,否则不需要使用Long.parseLong()
或Integer.parseInt()
因为您可以直接以十六进制形式编写数字文字。
不知道为什么要在Java中手动弄乱内存位置,但是如果需要截断很长的时间,这应该对您有用。 另外,除非您接受用户输入/网络发送的字符串形式的long值,否则0x ####代替parseLong起作用。
long a = 0xfffffff8L + 0x10L;
long b = a & 0xffffffffL;
编辑:在常数的末端保留我的L。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.