输入一个整数,完成进制的转换,可转换的进制范围是 2~36

记录一下将一个整数转换成2~36进制的代码,

// 字符串反转函数
void reverse(char str[], int length) {
    int start = 0;
    // length - 1 指向\0 前面那个的那个下标
    int end = length - 1;
    // 如果 strat 和 end 相等了,那么这个元素是没必要换的
    while (start < end) {
        char temp = str[start];
        str[start] = str[end];
        str[end] = temp;
        start++;
        end--;
    }
}

// num 是要被转化的参数, str是存储转化后数据的空间, base是要转化对应的进制数

char* itoa(int num, char* str, int base) {
    int i = 0;
    int  isNegative = 0;

    // 如果num 是 0
    if (num == 0) {
        str[i++] = '0';
        str[i] = '\0';
        return str;
    }

    // 如果num 是负数,做个标记,并让num 转换为正数
    if (num < 0 && base == 10) {
        isNegative = 1;
        num = -num;
    }

    while (num != 0) {
        int rem = num % base;
        str[i++] = (rem > 9) ? (rem - 10) + 'a' : rem + '0';
        num = num / base;
    }

    if (isNegative) {
        str[i++] = '-';
    }

    str[i] = '\0';

    reverse(str, i);

    return str;
}

x下面写一个main函数测试

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char * argv[]) {
    argc = 2;
    argv[1] = "256";
    if (argc != 2) {
        fprintf(stderr, "Usage:./XXX number");
    }
    int *endpoint;
    int num = atoi(argv[1]);
    char binary[128] = {0};
    itoa(num, binary, 2);
    printf("%s\n", binary);
    sscanf(binary, "%d", &num);
    printf("%d\n", num);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值