這是我的第一篇部落格,有寫的不好的地方,還請多多擔待~
因為要轉化的原始值位數是不固定的,在輸入要轉化的值方面可能會有點麻煩。 與其他博主通過 宣告陣列+strlen函式 的方式不同,這裡提供了另一種的思路:利用改進後的getche函式,每輸入乙個值都會判斷/計算一次,比如:原進製為8,要轉換的值為12,使用者輸入1後全域性變數sum被賦值為1×1,再輸入乙個2,全域性變數sum被賦值為1×1×8+2×1;再利用sum作媒介轉換成目標進製下的值。
這樣做的乙個好處在於不需要陣列。
我是用vs寫的,用其他編譯器的話需要將scanf_s改為scanf
#include
#include
#include
int sum =0;
int recording;
intmain()
else
if(input2 ==10)
else
//第三部分:非特殊進製的轉換/輸出結果
printf
("\n");
system
("pause");
printf
("\n");
}return0;
}//輸入與判斷函式
intinputa()
}int
inputb()
}//基礎函式a
void
basica
(int input1)
else
if(l[n]
==13
)//確認鍵
else
if(l >= input1)
//如果輸入值大於該進製值
if(x !=0)
}}printf
("輸入數值位數:%d\n"
, x);}
//基礎函式b
intbasicb
(int sum0,
int input2)
//要求傳入目標進製與得出後的十進位制值
printf
("%d\n"
, c);}
else
if(d <=9)
printf
("%d"
, d)
;else
printf
("%c",(
char
)(d +87)
);sum0 = sum0 -
(unsigned
int)
pow(input2, i)
* d;}if
(sum0 <=9)
printf
("%d"
, sum0)
;else
if(sum0 <=35)
printf
("%c",(
char
)(sum0 +87)
);}}
printf
("\n\n");
return0;
}
理論上它能在任意進製間實現轉換,但常用的一般在16以內,所以設定最大為16進製制,可以自己定義並修改
如果有可以改進的地方還希望各位大佬提出來~
Python實現任意進製轉換
這段 能夠實現任意進製的資料轉換,並且,超過四位的數字還會適用 進行分割,便於多位資料的閱讀。如果不需要進製轉換,只想每隔四位分割時不用設定inputradix和outputradix。進製格式說明 b 二進位制 o 八進位制 d 十進位制 h 十六進製制 由於format十六進製製用x表示,所以 ...
C語言實現任意兩種進製之間互相轉換
實現任意兩種進製之間的互相轉換,數值為非負整數。2進製 16進製制 之間任意選擇。輸入 包含三個引數,第乙個引數為原本的進製,第二個引數為其數值,第三個引數為要轉換的進製形式。輸出 輸出要轉換的進製形式 輸入 2 11010100 16 輸出 d4 輸入 16 d4 2 輸出 11010100 具體...
C 實現任意進製的相互轉換
進製轉換是計算機內部時時刻刻都在進行活動,本篇文章也是進製轉換的演算法介紹,不過不同的是我想利用ascll編碼實現2到61之間任意進製的相互轉換,更大進製的表示方法只不過是十六進製制表示方法的延伸 用字母a到z表示整數10到35,字母a到z表示整數36到61。這樣就可以表示2到61之間的任意進製啦,...