2015-11-02 24 views
0

我遇到問題。 我想將整數(例如64)轉換爲某個基礎(例如4)。這個數字看起來像100(我認爲)。 我需要得到之前呈現的號碼(100)。 如果我使用算法,我想我會得到001將被轉換爲1.我怎樣才能將基10整數轉換成以不是0的第一個數字開始的基4表示。 對不起,我的不好解釋,我希望有人會明白。將基座10轉換爲某個基座

int x=64; 
int t=x; // temp variable 
int pp=0; 
int base=4; 
while(t!=0) 
{ 
     pp = pp * 10 + t%base; 
     t/=base; 
} 
+0

http://en.cppreference.com/w/cpp/io/manip/setbase –

+0

我假設你在做這個練習,因爲有基礎庫轉換。基數是數字的顯示屬性,所以我不會將它存儲在「int」中。你可以運行你的循環,把字符放到'char'數組中,然後以相反的順序顯示'char'數組。 – lurker

+0

被愚弄的答案沒有真正表達清楚的是你所做的事情沒有意義。數字是毫無根據的 - 如果我有25件東西,我總是有相同數量的東西,不管基地是什麼。事實上,你的計算機可能在內部存儲所有的數字,但是你沒有看到它。有什麼有所作爲的是_displaying_該號碼給用戶(或保存在一個文件等)。在這種情況下,當您將其轉換爲字符串時,您需要指定轉換的基礎。在特定的基礎中有一個'int'類型的變量是沒有意義的。 –

回答

0

您需要將數據添加到你的價值的面前:

int x = 64; 
int t = x; // temp variable 

int pp = 0; 
int base = 4; 

int pos = 1; 

while (t != 0) 
{ 
    pp += (t % base) * pos; 
    t /= base; 
    pos *= 10; 
} 

我希望你只是因爲有很多,你可以落在陷阱用這個玩了(例如,如果base小於0或大於10)

+0

但是這給了我2101當我把64和4作爲基地,它不應該給我100? – Bpk7

+0

它給了我1000,這是正確的結果。 100基地4是16基地10.我不知道你是如何得到2101. – JSF

+0

值得一提的是,這個代碼是**不**從基數10轉換到另一個基地。它正在做的是計算一個數字,其基數爲10的數字與原始數字的數字應該在另一個基數中相同。因此,如果您進行此轉換,然後以10爲底進行打印,您將獲得相同的輸出(受到許多限制),因爲在所需的基底上打印會產生。 – JSF