任意进制转换简单理解

规则1:任意进制转10进制都是当前位数乘以当前位权重

规则2:N进制转M进制根据前值除/M的值,然后取M进制余数为当前位,小数位就是后乘取整;(基本就是这个思想)

首先,实现任意进制转其他进制,最好先转到10进制在操作比较方便;

目前代码只实现10->36 思想是一样的使用递归计算- -改变除数(/N)和求的余数(/M),然后根据逻辑值对应字符表示就是- -,楼主目前不知道Z以上怎么表示- -所以懵

 1 #include <iostream>
 2
 3
 4 void turnto36(int nums)
 5 {
 6     if(nums<=0)
 7     {
 8         std::cout<<"0";
 9         return;
10     }
11     turnto35(nums/36);
12     int result=nums%36;
13
14     if(result<=9)
15     {
16         std::cout<<(char)(result+‘0‘);
17     }else
18     {
19         std::cout << (char) (result+‘0‘+ (‘A‘-‘9‘)-1);
20     }
21 }
22
23
24 int main(int argc,char**argv)
25 {
26
27     turnto36(10);
28     std::cout<<std::endl;
29
30
31     std::cout<<(5678/10)%10<<std::endl;
32
33 }
时间: 2024-12-13 10:58:33

任意进制转换简单理解的相关文章

任意进制转换算法

任意进制转换算法 N年没有写博客,发个进制转换的玩下,支持负数:功能属于简化版的 Convert.ToInt32 ,特点是: 1.任意位,如:0,1(二进制),0...7(八进制),0...9,A...F(16进制),0...N(N进制),或者是:[email protected]#$%^&*(8进制,字符符号),也可以是中文. 2.8 byte 最大长度. 3.C#源码. 最近写markdown格式习惯啦,cnblogs啥时候全改掉算了,别用这个htmleditor算了. 先说明下进制转换的基

Python版任意进制转换

def decimalToAny(num,n): baseStr = {10:"a",11:"b",12:"c",13:"d",14:"e",15:"f",16:"g",17:"h",18:"i",19:"j"} new_num_str = "" while num != 0: remai

2~62位任意进制转换(c++)

进制转换的符号表为[0-9a-zA-Z],共61个字符,最大可表示62进制. 思路是原进制先转换为10进制,再转换到目标进制. 疑问: 对于负数,有小伙伴说可以直接将符号丢弃,按照整数进行进位转换,最后再将负号补回来,我认为这种做法是不对的. 正确的做法是:考虑好按照16位(short)还是32位(int)抑或64位(long long),先求出二进制补码(这时候就正负数就统一了),将二进制数转换为十进制后在转换为其他进制(如果有小伙伴知道如何直接将二进制转换为任意进制的方法可以留言告诉我,不胜

c语言将字符串转成int,将int转成字符串。附带任意进制转换函数

在网上看到各种将字符串转成int,和int转成字符串的方法.我自己比较喜欢用的方法是下面的,记住模板就行,最开始我也老是记不住,找到规律,多用几遍就好了. 1.将字符串转成int char s[20] = "123456";   // 注如果此处不是数字字符串类型,如下面的字符串  12abc -->  12        ab12 --> 0 int a = 0; sscanf(s,"%d",&a);   // a = 123456   就得到

lua之m进制转换为n进制-任意进制转换算法

够无聊的写这个,为防止需要的人也无聊一遍,写个吧 算法有n种,但是,咱们一种就够用了 1 --数组倒序排列 2 local function orderByDesc( input ) 3 local output = {} 4 local count = #input 5 while count > 0 do 6 table.insert(output, input[count] ) 7 count = count -1 8 end 9 return output 10 end 11 12 --

【ACM】大数据+任意进制转换 jobdu 1080

[九度OJ] 1080 进制转换 题目描述: 将M进制的数X转换为N进制的数输出. 输入: 输入的第一行包括两个整数:M和N(2<=M,N<=36).下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出. 输出: 输出X的N进制表示的数. 样例输入: 16 10 F 样例输出: 15 提示: 输入时字母部分为大写,输出时为小写,并且有大数据. 这题考察的比较综合,进制转换+大数据 很久没有做ACM的题目了,且拿这个练练手,大整数模板是用的王道论坛的模板-贴出来备

【模板小程序】2~62位非负数任意进制转换,包含合法性检查

1 //进制转换模块 2 #include <iostream> 3 #include <string> 4 #include <cmath> 5 #include <algorithm> 6 7 using namespace std; 8 9 //将任意字符转换为十进制 [0-9a-zA-Z],61个字符,最大表示62进制 10 int convertToDec(char c) 11 { 12 int decNum; 13 if(c>='0' &a

任意进制转换

#include<iostream> #include<cstdio> using namespace std; int main() { int n,m,k=0,a,x,c,i,b[100],y; char s[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

在线任意进制转换工具 - aTool在线工具

http://www.atool.org/hexconvert.php ss = "[email protected]"; function v10toX(n, m) { m = String(m).replace(/ /gi, ""); if (m == "") { return "" } var a = ss.substr(0, 10); var b = a + "."; if (eval("