C語言實現任意進製間數的轉換

2021-10-02 17:14:12 字數 1647 閱讀 5994

這是我的第一篇部落格,有寫的不好的地方,還請多多擔待~

因為要轉化的原始值位數是不固定的,在輸入要轉化的值方面可能會有點麻煩。 與其他博主通過 宣告陣列+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之間的任意進製啦,...