回答
对于这个项目,这可能有助于了解基地如何工作。无论如何,让我们通过一个过程来说明人们如何转换成十二进制。这应该是最简单的实施方法。
首先,我们有我们的小数,因为这是一个容易开始的地方。比方说,我不知道,1452是我们的号码。我们还需要一个字符数组来表示每个字符的内容,因为这比直接的ASCII转换更容易,其中数字字符和字母字符是分开的。
int dec=1452;
int toBase=12;
char outputs[36]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}
在此之后,我们很可能将只输出结果在另一个基地 - 它没有任何意义来存储它的多种方式,使您的转换过程从一个基站只有转化为给定的任何其他简单。我们可以将结果存储在一个字符数组中,但是我们已经存储了这个数字 - 没有任何一点。
对于这种方法,我将要描述,我们将需要一个缓冲区变量来跟踪我们的数字,因为我们转换了它的一部分。
int buf=dec;
接下来,我们将开始在我们要去的基地计算空间12,并查看每个空间的价值。我们会继续,直到我们通过我们的号码,然后回溯一个。我们还需要保存从for循环到第一个空间的空间。
int space=0;
while(Math.pow(toBase,space))<buf){
space++;
}//Braces added for clarity
space--;
现在,这是主要的计算循环,我们将输出结果。同样,原始数字仍然存储在'dec'中,所以我们不必担心丢失数据或者改变数据。
int i;
for(i=space;i>=0;i--){//We have set up the for loop to check each space as we progress
int modResult=buf%Math.pow(toBase,i);//Gets the number that goes in this space of the resulting base number
buf-=modResult*Math.pow(toBase,i);//We have that, so take it out of the number
printf("%c",outputs[modResult]);
}
因为我们正在做这个,从顶部空间去底部,modResult绝不会高于最高值越高我们的基地可以进去,随着这个问题的方法,你的程序将输出到控制台由此产生的数字。另外,请记住,这仅输出数字 - 为了存储和计算的目的,使用基数为10的内置函数要简单得多。此外,请注意toBase变量永远不会超过36.
作为进一步的说明,我从右到左编号数字(空格),从零开始,因为最右边的空间是1,由您的基数表示为零。希望这可以帮助。
不错的答案,但有一些建议:对'outputs'数组使用常量字符串(而不是单个char字符串)。另外你的代码非常密集......你已经把所有的空间都拿走了,这使得它不易读。例如,'for(i = space; i> = 0; i - )'最后,'pow()'在这里有点矫枉过正,因为它是浮点数可能很危险。只需保留一个单独的值变量,每次通过循环时都乘以toBase。 – TypeIA
- 1. 将密码子(碱基64)转换为碱基10数字
- 2. 碱基序列
- 3. 删除碱基对
- 4. 加号,减号和2到36之间大数的任何碱基的比较
- 5. 天然碱基定制
- 6. 反应天然碱基类
- 7. 如何处理java中的碱基转换
- 8. 排列阵列中的DNA碱基对
- 9. 支持Vue中的2个碱基URL
- 10. 碱基间转换算法是如何工作的?
- 11. 从LibreOffice的碱
- 12. 转换碱的列表
- 13. 给定一个整数N,那里有多少个碱基b,这样N的碱基b表示以1?
- 14. 呼叫基地方法作为碱型
- 15. 从基座10转换到任何基材2和36
- 16. 使用字典提供DNA到RNA碱基的映射
- 17. 用碱阵列
- 18. 阴谋安装依赖错误:“碱基*被排除在外,因为顶层依赖基 - 任何的”
- 19. 你如何摆脱没有碱基案例递归
- 20. 如何在fasta格式化的序列中找到每个碱基的位置
- 21. 'base'是'deriv'的不可访问的碱基
- 22. C#接口碱用法
- 23. 的WebAPI actionfilters,如何使用从碱型
- 24. 只用期望的碱基清除序列?
- 25. 继承:布施衍生为ARG的功能期待碱基
- 26. Github上/ Cygwin的错误:cygheap碱基错配检测
- 27. 如何得到的游离碱
- 28. 使用python在一段RNA序列中进行碱基配对
- 29. 如何转换从Java的任何基地到基地10
- 30. 汇编转换任何基地到任何基地
你应该真的记下你已经拥有的代码,并且询问它为什么是或者不工作的具体问题。 – ryyker
[将十进制转换为任意基数的可能的重复?](http://stackoverflow.com/questions/19072348/converting-a-decimal-to-any-radix-base-number) – ryyker
'strtol()'它的亲戚会将任何一个从2到36的字符串转换为二进制。我不认为在任意基础中有格式化数字的标准函数(8,10和16可以用'printf()'等来实现,但其他基础不支持作为标准)。 –