16進(jìn)制數(shù)據(jù)轉(zhuǎn)換成10進(jìn)制HexToDecimal_第1頁
16進(jìn)制數(shù)據(jù)轉(zhuǎn)換成10進(jìn)制HexToDecimal_第2頁
16進(jìn)制數(shù)據(jù)轉(zhuǎn)換成10進(jìn)制HexToDecimal_第3頁
16進(jìn)制數(shù)據(jù)轉(zhuǎn)換成10進(jìn)制HexToDecimal_第4頁
16進(jìn)制數(shù)據(jù)轉(zhuǎn)換成10進(jìn)制HexToDecimal_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、package com.test.hex2decimal; import java.util.HashMap; publicclass MainEntry publicstaticvoid main(String args) / 初始化 16 進(jìn)制數(shù)據(jù)鍵值對newnewHashMap<Integer, Character> hmI2C = HashMap<Integer, Character>();HashMap<Character, Integer> hmC2I =HashMap<Character, Integer>(); for ( int

2、 i = 0; i < 10; i+) hmI2C.put(i, ( char ) ( '0' +i); hmC2I.put( char ) ( '0' +i), i);for ( int i = 0; i < 6; i+) hmI2C.put(10+i, ( hmC2I.put(char ) ( 'A' +i); char ) ( 'A' +i), 10+i);7頁/ 調(diào)用功能接口hexToDecimal hmC2I);( "ECABFFFED1234D7897685DC", hmI2C,* 實(shí)現(xiàn)

3、功能函數(shù)*/ privatestaticvoid hexToDecimal(String hexString,HashMap<Integer, Character> hmI2C, HashMap<Character, Integer> hmC2I) String result = "0" ; / 初始化結(jié)果值 for ( int i = 0; i < hexString.length()-1 ; i+) if (i = 0) result =additional (hmC2I.get(hexString.charAt(i). toString(

4、),"0" , hmI2C, hmC2I); result =decimalStrMultiple16(result, hmI2C, hmC2I); else result =additional (result,(hmC2I.get(hexString.charAt(i).toString(),hmI2C, hmC2I);result =decimalStrMultiple16(result, hmI2C, hmC2I);result = additional (result,(hmC2I.get(hexString.charAt(hexString.length()-1

5、).toString(),hmI2C, hmC2I);= " +result);System. out .println( "result /*乘法:*/被乘數(shù)privatestatic String decimalStrMultiple16(String decimalString,HashMap<Integer, Character> hmI2C,HashMap<Character, Integer> hmC2I) StringBuffer sb =new StringBuffer();carryAndUnit cu =null ;for ( i

6、nt i = decimalString.length()-1; i >=0;i-) if (i = decimalString.length()-1) cu =multipleOne (decimalString.charAt(i),0, hmI2C, hmC2I); else cu =multipleOne (decimalString.charAt(i),cu. c, hmI2C, hmC2I); sb.insert(0, cu.u);if (cuc > 0) sb.insert(0, cu.c);returnsb.toString();/*一位乘法:*被乘數(shù)*進(jìn)位*直接乘了

7、 16 ,是因?yàn)?16 進(jìn)制轉(zhuǎn)換為 10 進(jìn)制數(shù)*/privatestatic carryAndUnitmultipleOne(charintc,HashMap<Integer, Character> hmI2C,HashMap<Character,Integer>hmC2I)intmultiplicand = hmC2I.get(a);intmultiplier = 16;intcarry = c;intresult = multiplicand*multiplier+carry;carryAndUnit cu =new carryAndUnit(result/10,

8、a,hmI2C.get(result%10);returncu;/*加法:*被加數(shù)*/加數(shù)privatestatic String additional(String decimalResult, String addend,HashMap<Integer, Character> hmI2C, HashMap<Character, Integer> hmC2I) StringBuffer sb =new StringBuffer();carryAndUnit cu =null ;if (addend.length() = 1) for ( int i = decimal

9、Result.length()-1 ; i >= 0;i-) if (i = decimalResult.length()-1) cu =additionalOne (decimalResult.charAt(i), addend.charAt(0), 0, hmI2C, hmC2I); else cu =additionalOne (decimalResult.charAt(i), '0' , cu. c, hmI2C, hmC2I);sb.insert(0, cu. u); if (cu. c > 0) c);sb.insert(0, cu.elseif(add

10、end.length() = 2) for ( int i = decimalResult.length()-1 ; i >= 0; i-) if (i = decimalResult.length()-1) cu =additionalOne (decimalResult.charAt(i), addend.charAt(1), 0,hmI2C, hmC2I); else cu =additionalOne (decimalResult.charAt(i), '0' , cu. c, hmI2C, hmC2I);sb.insert(0, cu.u);if (cu. c

11、> 0) sb.insert(0, cu.c);String tempStr = sb.toString(); sb.delete(0, sb.length();sb.insert(0, tempStr.charAt(tempStr.length()-1); for ( int i = tempStr.length()-2 ; i >= 0; i-) if (i = tempStr.length()-2) cu =additionalOne (tempStr.charAt(i), addend.charAt(0), 0,hmI2C, hmC2I); else cu =additio

12、nalOne (tempStr.charAt(i),'0' , cu. c, hmI2C, hmC2I);sb.insert(0, cu.u);if (tempStr.length() = 1) sb.insert(0, addend.charAt(0); if (cu. c > 0) sb.insert(0, cu.c); else System. out .println("additional.addenderror" );return sb.toString(); /*一位加法:被加數(shù) 加數(shù) 之前的進(jìn)位*/charhmC2I) privatestatic carryAndUnit additionalOne( a, char b, int c,HashMap<Integer, Character> hmI2C,HashMap<Character, Integer> int augend = hmC2I.get(a); int addend = hmC2I.get(b); int carry = c;int result = augend+addend+carry; carryAndUnit

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論