二进制转换成十六进制输出的C代码(二)

下面是一个将二进制数转换为十六进制并输出的示例代码:

#include <stdio.h>
#include <string.h>

// 将二进制字符串转换为十六进制字符
char binaryToHex(char *binary) {
    
    
    int decimal = 0;
    int base = 1;
    int len = strlen(binary);

    // 将二进制转换为十进制
    for (int i = len - 1; i >= 0; --i) {
    
    
        if (binary[i] == '1') {
    
    
            decimal += base;
        }
        base *= 2;
    }

    // 将十进制转换为十六进制字符
    char hex;
    if (decimal >= 0 && decimal <= 9) {
    
    
        hex = decimal + '0';
    }
    else {
    
    
        hex = decimal - 10 + 'A';
    }

    return hex;
}

int main() {
    
    
    char binary[65];
    printf("请输入一个二进制数(最多64位):");
    scanf("%s", binary);

    int len = strlen(binary);
    
    // 补0,使二进制位数为4的倍数
    int remainder = len % 4;
    if (remainder != 0) {
    
    
        int padding = 4 - remainder;
        
        for (int i = len + padding; i >= padding; --i) {
    
    
            binary[i] = binary[i - padding];
        }
        
        for (int i = 0; i < padding; ++i) {
    
    
            binary[i] = '0';
        }
        
        len += padding;
    }

    printf("转换为十六进制:");
    for (int i = 0; i < len; i += 4) {
    
    
        char temp[5];
        strncpy(temp, binary + i, 4);
        temp[4] = '\0';

        char hex = binaryToHex(temp);
        printf("%c", hex);
    }

    printf("\n");

    return 0;
}

在这个示例中,我们定义了一个函数binaryToHex,该函数接受一个二进制字符串作为参数,并将其转换为十六进制字符。

然后,在main函数中,我们首先输入一个最多64位的二进制数,并计算其长度。

接下来,我们检查二进制数的位数是否是4的倍数。如果不是,则在前面补零,使其位数为4的倍数。

然后,使用循环每4位截取二进制数,并调用binaryToHex函数进行转换。将得到的十六进制字符逐个输出。

当你运行这个程序时,它将提示你输入一个二进制数,并输出其相应的十六进制表示。

例如,如果输入二进制数1101011001,则输出:

转换为十六进制:DA

请注意,这个程序假设输入的二进制数最多为64位,并进行了一些错误处理,如自动补零和长度限制。你可以根据实际需求进行修改。

猜你喜欢

转载自blog.csdn.net/weixin_37787043/article/details/131521318