zoukankan      html  css  js  c++  java
  • C 转为2进制 8进制 16进制

    #include <stdio.h>
    #include <stdlib.h>
    #define N 8
    
    void toBin(int n,int dec);
    void toBin2(int n,int dec);
    int main(){
        //十进制转2进制
        //toBin(6,2);//ok
    
        //十进制转8进制
        //toBin(26,8);//ok
    
        toBin2(31,16);
    
    }
    
    /**
    看一个例子
    6转2进制
    6%2=0
    6/2=3  --->  非0 可以继续算 ----> 3%2=1
    3/2=1  --->  非0 可以继续算 ----> 1%2=1
    1/2=0 --->结束
    
    */
    void toBin(int n,int dec){
        char arr[N]={0};
        int i=N-1;//由于最先算出的数是末尾  所以先指向末尾
        arr[i--]=n%dec+'0';    
        while(n/dec!=0){
            n=n/dec;
            arr[i--]=n%dec+'0';    
        }
    
        //输出
        i=0;
        for(i=0;i<N;i++){
            if(arr[i]==0){
    
            }else {
                printf("%c,",arr[i]);
            }
        }
    }
    
    /**
    转16进制  
    其实原理还是一样 不同的是 对于超过9的数字 要表示为A
    */
    void toBin2(int n,int dec){
        char arr[N]={0};
        int i=N-1;//由于最先算出的数是末尾  所以先指向末尾
        //控制字符 超过10的要输出A
        if(n%dec<=9){
            arr[i--]=n%dec+'0';    //
        }else{
            //n%dec-10+'A';如果n%dec是10  这么处理就是A了
            arr[i--]=n%dec-10+'A';
        }
        while(n/dec!=0){
            n=n/dec;
            if(n%dec<=9){
                arr[i--]=n%dec+'0';    //
            }else{
                //n%dec-10+'A';如果n%dec是10  这么处理就是A了
                arr[i--]=n%dec-10+'A';
            }
        }
    
        //输出
        i=0;
        for(i=0;i<N;i++){
            if(arr[i]==0){
    
            }else {
                printf("%c,",arr[i]);
            }
        }    
    
    }
  • 相关阅读:
    .NET实现Excel文件的读写 未测试
    权限管理设计
    struts1中配置应用
    POJ 2139 Six Degrees of Cowvin Bacon(floyd)
    POJ 1751 Highways
    POJ 1698 Alice's Chance
    POJ 1018 Communication System
    POJ 1050 To the Max
    POJ 1002 4873279
    POJ 3084 Panic Room
  • 原文地址:https://www.cnblogs.com/cart55free99/p/2983336.html
Copyright © 2011-2022 走看看