| 5 | 1/1 | 返回列表 |
| 查看: 1928 | 回復(fù): 4 | |||
chineseway捐助貴賓 (知名作家)
離...
|
[求助]
請(qǐng)教java里如何將16進(jìn)制轉(zhuǎn)換成10進(jìn)制,并自動(dòng)識(shí)別處理成正負(fù)數(shù)
|
|
請(qǐng)教java里如何將16進(jìn)制轉(zhuǎn)換成10進(jìn)制,并自動(dòng)識(shí)別處理成正負(fù)數(shù) 我們的程序里有一段代碼本來(lái)的目的就是將獲取的一個(gè)16進(jìn)制的數(shù)據(jù)轉(zhuǎn)換成10進(jìn)制, 下面是獲取的16進(jìn)制數(shù)據(jù)的一些例子: 040B 0103 04D1 00E8 FFB0 FFBA FFE7 FFD8 當(dāng)獲取到 040B 0103 04D1 00E8 這些數(shù)據(jù)的時(shí)候,按"正常"的16進(jìn)制轉(zhuǎn)成10進(jìn)制,得到的都是正數(shù)的結(jié)果,都是對(duì)的 但是獲取到 FFB0 FFBA FFE7 FFD8 這些數(shù)據(jù)的時(shí)候,按"正常"的16進(jìn)制轉(zhuǎn)成10進(jìn)制,得到的是很大的正數(shù)的結(jié)果,比如FFB0會(huì)轉(zhuǎn)換成 65456 但實(shí)際上這時(shí)候我想把它轉(zhuǎn)換成-80 下面這段代碼我們是找個(gè)朋友寫(xiě)的,而且有些時(shí)候處理的也不對(duì),我對(duì)編程完全外行,想請(qǐng)高手幫 忙修改下. String ph=String.valueOf(charArray[10])+String.valueOf(charArray [11])+String.valueOf(charArray[12])+String.valueOf(charArray[13]); double ph_d=0.0; int ph_t=Integer.parseInt(ph,16); String ph_bi=Integer.toBinaryString(ph_t); char[] ph_char=ph_bi.toCharArray(); if(ph_t/100.0>513){ String ph_bi2=""; for(char obj:ph_char){ if(obj=='1'){ ph_bi2+="0"; }else{ ph_bi2+="1"; } } ph_d=-(Integer.valueOf(ph_bi2,2)+1); }else{ ph_d=ph_t/100.0; } |

至尊木蟲(chóng) (著名寫(xiě)手)
|
base 16 FFB0 = base 2 1111,1111,1011,0000 base 16 040B = base 2 0000,0100,0000,1011 from your description, it seems that when the first digit in the base 2 string equal to 1, you want a negative value and when it = 0 , you want a positive value. If this is true it is easy, do a comparison with the threshold 1000,0000,0000,0000 which is 32768 assuming int value is the number converted from base 16 string if (value >= 32768) return 65536 - value; return value; |
至尊木蟲(chóng) (著名寫(xiě)手)
捐助貴賓 (知名作家)
離...
|
呵呵 謝謝 你這倒是個(gè)辦法 但不知道是不是有什么正統(tǒng)的方法 我總感覺(jué)有種直接的方法 定義好數(shù)據(jù)類型后 一個(gè)函數(shù)搞定的 給你看看別人的方法 http://topic.csdn.net/u/20120713 ... 7-597b043761ab.html |

至尊木蟲(chóng) (著名寫(xiě)手)
|
我問(wèn)你一句,哪種辦法你更能理解?通過(guò)你的描述,你不懂編程,所以我第一個(gè)帖子解釋了下原理,然后給你個(gè)大概的方案。然后你要代碼,這種二進(jìn)制的運(yùn)算在很長(zhǎng)的16進(jìn)制轉(zhuǎn)換中很快,但是要有很好的基礎(chǔ)去理解,而這個(gè)正是你沒(méi)有的(你也提到要朋友去測(cè)試了)。那這種簡(jiǎn)單易懂的就正適合你了,而且你的16進(jìn)制數(shù)只有4位(<2的16次方),更不需要復(fù)雜的代碼了。能抓老鼠的就是好貓 |
| 5 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|