2015-11-02 25 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