線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1194
推到 Plurk!
推到 Facebook!

Turbo C 大數轉換

答題得分者是:阿信
boyce23
一般會員


發表:2
回覆:6
積分:1
註冊:2008-03-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-06-14 19:17:21 IP:203.70.xxx.xxx 訂閱
 想請教 大數轉換
在Turbo C 內 最大變數為32bit
當要處理"大數"運算時,通常將其轉化成字串
當下列字串 陣列長度18
134958189010000000 10進位
上面這一段
放置於buf中
buf[0]=0x31 "1"
buf[1]=0x33 "3"
buf[2]=0x34 "4" ......等
如果今天要將134958189010000000 轉16進制
1DF77C203789880 16進位
有比較好的方式可處理嗎?
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-06-15 13:26:42 IP:114.32.xxx.xxx 訂閱
參考看看,未驗證

[code cpp]
int i
unsigned long TempH=0,TempL=1; //暫存
unsigned long RltH,RltL; //結果
unsigned long N;
unsigned long MH=0,ML=1;

for (i=17;i>=0;i--) {
N=buf[i]&0x0f;
TempL=N*ML;
TempH=N*MH;
if (TempL>=0x10000000) {
TempH =TempL>>28;
TempL=TempL&0xfffffff;
}

RltL =TempL;
RltH =TempH;
if (RltL>=0x10000000) {
RltH =RltL>>28;
RltL=RltL&0xfffffff;
}

ML*=10;
MH*=10;
if (ML>=0x10000000) {
MH =ML>>28;
ML=ML&0xfffffff;
}
}
[/code]

boyce23
一般會員


發表:2
回覆:6
積分:1
註冊:2008-03-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-06-22 13:56:58 IP:203.70.xxx.xxx 訂閱
感謝阿信回覆
後來關鍵是在餘數,但一開始苦於turbo c內整數型態最大到34位元
如果欲轉換變數為100位數的變數則沒有可用的資料型態可放置轉換

所以必須用1位1位的方式 將位數拉進來算 取餘數
算到商,在取餘數...
最後餘數整理起來..就是答案


系統時間:2017-12-15 4:48:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!