zoukankan      html  css  js  c++  java
  • 十六进制---十进制转换

    一、十六--->十

    思路:把十六进制的字符串看做十进制的字符串,依照十进制字符串转换为数字的方法。从高位到地位逐个字符处理。

    代码:

    #include<stdio.h>
    #include<string.h>
    /*依据须要跟换 M 的值,以处理很多其它位数的十六位字符*/
    #define M 10
    /*
    	处理字符串。返回10进制数字 
    */
    long long toTen(char s[]){
    	int i;
    	/*
    		long long 为适应比較大的数字,
    		若数据太大,就要使用数组处理 
    	*/
    	long long d=0;
        for(i=0; s[i]; i++)
        {
        	/*
        		 d = d * 10 提升 d 的位数,给当前处理的字符留出位置 
    		*/
            d=d*16;
            /*
            	假设s[i] 是 0 ~ 9的数字。直接加上 s[i] - '0' 
    		*/ 
            if(s[i]>='0' && s[i]<='9')
                d=d+s[i]-'0';
            /*
            	字母要区分大写和小写 
    		*/
            else if(s[i]>='a' && s[i]<='f')
            {
                d=d+s[i]-'a'+10;
            }
            else if(s[i]>='A' && s[i]<='F')
            {
                d=d+s[i]-'A'+10;
            }
        }
        return d;
    }
    int main(){
    	char str[M];
    	gets(str);
    	printf("%lld",toTen(str));
    	return 0;
    }

    二、十-->十六

    思路:简单的 除 k 取余法

    代码:

    #include<stdio.h>
    /*最多处理50为的十进制数字字符串,可依据须要更改*/
    #define M 50
    
    int main(){
    	int i=0,j,len,temp;
    	long num;
    	char str[M];
    	
    	scanf("%ld",&num);
    	
    	do{
    		/*除 k 取余 */
    		temp = (num%16);
    		/*依据余数确定十六进制的各位上的数字*/
    		/*余数小于 10 ,加字符 ‘0’*/
    		if(temp<10){
    			str[i] = temp+'0'; 
    		}else{
    			/*余数大于 10 ,加字符 ‘A’(当然也能够是小 a */
    			str[i] = temp - 10 + 'A';
    		}
    		i++;
    		/*除 K 取整*/
    		num/=16;
    	}while(num);
    	/*倒叙输出数组str的各个字符*/ 
    	for(j=i-1;j>=0;j--){
    		printf("%c",str[j]);
    	}
    	return 0;
    }


  • 相关阅读:
    微服务架构总结
    微服务-网关服务
    HttpClient-RestTemplate-Feign
    RPC和REST
    Springmvc的拦截器执行顺序及各方法作用
    秒杀系统优化方案(下)吐血整理
    秒杀系统优化方案(上)吐血整理
    分布式session的管理
    缓存设计——缓存和数据库的数据一致性
    个人理解的javascript作用域链与闭包
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7098072.html
Copyright © 2011-2022 走看看