繁体   English   中英

十六进制数相加,结果被截断

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM