int型转二进制,八进制,十六进制查表法

#include <stdio.h>

void toBinary(int num);
void toOct(int num);
void toHex(int num);
void total(int num, int base, int offset);
void toBinary2(int num);
void toOct2(int num);
void toHex2(int num);

int main(int argc, const char * argv[])
{
    toBinary(12);
    toOct(12);
    toHex(12);
    toBinary2(12);
    toOct2(12);
    toHex2(12);
    return 0;
}

void toBinary2(int num){
    total(num, 1, 1);
}

void toOct2(int num){
    total(num, 7, 3);
}

void toHex2(int num){
    total(num, 15, 4);

}

void total(int num, int base, int offset)
{
    char cs[16] = {
        '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'
    };
    char rs[32];
    int len = sizeof(rs) / sizeof(char);
    int pos = len;
    
    while (num) {
        int result = num & base;
        rs[--pos] = cs[result];
        num = num>>offset;
    }
    
    for (int i = pos; i<len; i++) {
        printf("%c", rs[i]);
    }
    
    printf("\n");
}

// 转二进制
void toBinary(int num)
{
    char cs[2] = {'0','1'};
    char rs[32];
    int len = sizeof(rs) / sizeof(char);
    int pos = len; // 32
    
    while (num != 0) {
        int result = num & 1;
        rs[--pos] = cs[result];
        num = num>>1;
    }
    
    for (int i = pos; i<len; i++) {
        printf("%c", rs[i]);
    }
    printf("\n");
    
}

// 转八进制
void toOct(int num)
{
    char cs[8] = {
        '0','1','2','3','4','5','6','7'
    };
    
    char rs[11];
    int len = sizeof(rs) / sizeof(char);
    int pos = len; // 11;
    
    while (num != 0) {
        int result = num & 7;
        rs[--pos] = cs[result];
        num = num>>3;
    }
    
    for (int i = pos; i<len; i++) {
        printf("%c", rs[i]);
    }
    
    printf("\n");
}

// 转十六进制
void toHex(int num)
{
    char cs[16] = {
        '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'
    };
    char rs[8];
    int len = sizeof(rs) / sizeof(char);
    int pos = len;
    
    while (num != 0) {
        int result = num & 15;
        rs[--pos] = cs[result];
        num = num>>4;
    }
    
    for (int i = pos; i<len; i++) {
        printf("%c", rs[i]);
    }
    
    printf("\n");
}


i

版权声明:本文为博主原创文章,未经博主允许不得转载。

posted on   ll_xyls  阅读(431)  评论(0编辑  收藏  举报

编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

统计

点击右上角即可分享
微信分享提示