將任意長(zhǎng)度十六進(jìn)制轉(zhuǎn)化為十進(jìn)制應(yīng)該注意什么?
一般來(lái)講,進(jìn)制轉(zhuǎn)換是在字符串處理的時(shí)候才會(huì)用到,比如把一個(gè)數(shù)按照特定進(jìn)制輸出,或者由特定進(jìn)制的數(shù)的字符串表示生成具體的數(shù)值,這樣才會(huì)用到數(shù)的進(jìn)制轉(zhuǎn)換。如果是應(yīng)用在RSA等等這樣的數(shù)學(xué)算法里面,是沒(méi)有必要使用字符串的,應(yīng)該都是具體的數(shù)值。比方說(shuō),有一個(gè)InputStream,從這里可以得到具體的若干比特的數(shù)值,那么就可以直接讀取它,不管多少位,因?yàn)閿?shù)值是沒(méi)有進(jìn)制之分的,只有數(shù)值的表示才有進(jìn)制之分。但是如果這個(gè)InputStream里面存放的是字符串(不應(yīng)該這樣的),那么只能用一些字符串處理來(lái)轉(zhuǎn)換了。如果想要將數(shù)據(jù)用不同的進(jìn)制表示出來(lái),那么BigInteger和BigDecimal都很方便。
關(guān)鍵在于數(shù)據(jù)的輸入是直接的數(shù)值還是字符串。如果很不幸是字符串,那么我建議lz改成二進(jìn)制輸入,因?yàn)楹苌儆杏米址问奖4鏀?shù)值的,尤其在科學(xué)計(jì)算方面。