2012-06-05 41 views
-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); 

回答

1

不知道爲什麼要在Java手動存儲位置的混亂,但是如果你需要截斷長這應該爲你工作。另外,除非您接受用戶輸入/網絡中以字符串形式發送的長整型數據,否則0x ####將代替parseLong。

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

編輯:在常量的末尾留下我的L's。

2

因爲它似乎你想要做的32位數學,爲什麼你在第一時間使用long

如果只是用int,你得到你想要的東西:

int a = 0xfffffff8 + 0x10; 

會給你8

而且正如托馬斯所說,除非你從somwhere遞交字符串,否則不需要使用Long.parseLong()Integer.parseInt(),因爲您可以直接以十六進制格式編寫數字文字。