C语言中各进制之间的转换

在C语言中,进行不同进制之间的转换通常涉及将数字从一种表示形式转换为另一种表示形式。以下是一些常见的进制转换方法:

直接转进制输出

1. 十进制到其他进制

  • 二进制:使用 printf 函数的 %d 格式说明符,或者使用位操作。
  • 八进制:使用 printf 函数的 %o 格式说明符。
  • 十六进制:使用 printf 函数的 %x%X 格式说明符。
#include <stdio.h>

int main() {
    int decimal = 255;
    printf("Decimal to binary: %d in binary is %b\n", decimal, decimal);
    printf("Decimal to octal: %d in octal is %o\n", decimal, decimal);
    printf("Decimal to hexadecimal: %d in hexadecimal is %x\n", decimal, decimal);
    return 0;
}

2. 其他进制到十进制

  • 二进制:使用 printf 函数的 %d 格式说明符,或者使用位操作。
  • 八进制:使用 printf 函数的 %d 格式说明符。
  • 十六进制:使用 printf 函数的 %d 格式说明符。
#include <stdio.h>

int main() {
    int binary = 0b11111111; // 二进制表示
    int octal = 0377; // 八进制表示
    int hex = 0xFF; // 十六进制表示

    printf("Binary to decimal: %b in decimal is %d\n", binary, binary);
    printf("Octal to decimal: %o in decimal is %d\n", octal, octal);
    printf("Hexadecimal to decimal: %x in decimal is %d\n", hex, hex);
    return 0;
}

3. 其他进制之间的转换

  • 二进制到八进制:可以将二进制数分组为每组三位,然后转换为对应的八进制数。
  • 二进制到十六进制:可以将二进制数分组为每组四位,然后转换为对应的十六进制数。
  • 八进制到二进制:可以将八进制数的每一位转换为对应的三位二进制数。
  • 八进制到十六进制:可以将八进制数分组为每组两位,然后转换为对应的十六进制数。
  • 十六进制到二进制:可以将十六进制数的每一位转换为对应的四位二进制数。
  • 十六进制到八进制:可以将十六进制数分组为每组四位,然后转换为对应的八进制数。

常见进制之间的转换

二进制到十进制
int binaryToDecimal(int binary, int *decimal) {
    *decimal = 0;
    while (binary > 0) {
        *decimal = (*decimal << 1) | (binary & 1);
        binary >>= 1;
    }
    return *decimal;
}
十进制到二进制
void decimalToBinary(int decimal, int *binary) {
    int index = 0;
    while (decimal > 0) {
        binary[index++] = decimal % 2;
        decimal /= 2;
    }
    // 如果需要,可以反转数组
    for (int i = 0, j = index - 1; i < j; i++, j--) {
        int temp = binary[i];
        binary[i] = binary[j];
        binary[j] = temp;
    }
}
十进制到八进制
void decimalToOctal(int decimal, int *octal) {
    int index = 0;
    while (decimal > 0) {
        octal[index++] = decimal % 8;
        decimal /= 8;
    }
    // 如果需要,可以反转数组
    for (int i = 0, j = index - 1; i < j; i++, j--) {
        int temp = octal[i];
        octal[i] = octal[j];
        octal[j] = temp;
    }
}
十进制到十六进制
void decimalToHexadecimal(int decimal, int *hexadecimal) {
    int index = 0;
    char hexDigits[] = "0123456789ABCDEF";
    while (decimal > 0) {
        hexadecimal[index++] = hexDigits[decimal % 16];
        decimal /= 16;
    }
    // 如果需要,可以反转数组
    for (int i = 0, j = index - 1; i < j; i++, j--) {
        int temp = hexadecimal[i];
        hexadecimal[i] = hexadecimal[j];
        hexadecimal[j] = temp;
    }
}

这些函数将十进制数转换为其他进制,并将结果存储在整数数组中。你可以根据需要调用这些函数,并将结果存储在数组中。如果你需要将结果转换回十进制,你可以使用类似的方法来实现。

请注意,这些函数假设输入的十进制数是正数,并且没有进行错误检查。在实际应用中,你可能需要添加更多的错误检查和处理逻辑。

 

相关推荐

  1. C语言之间转换

    2024-04-05 19:52:05       33 阅读
  2. HJ5 转换C语言

    2024-04-05 19:52:05       53 阅读
  3. matlab实现单精度、16之间转换函数

    2024-04-05 19:52:05       59 阅读
  4. C/C++转换

    2024-04-05 19:52:05       54 阅读
  5. C++:万能转换

    2024-04-05 19:52:05       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-05 19:52:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-05 19:52:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-05 19:52:05       87 阅读
  4. Python语言-面向对象

    2024-04-05 19:52:05       96 阅读

热门阅读

  1. Linux C++ 018-继承

    2024-04-05 19:52:05       39 阅读
  2. TWS蓝牙耳机SDK组成原理

    2024-04-05 19:52:05       35 阅读
  3. leetcode561-Array Partition I

    2024-04-05 19:52:05       30 阅读
  4. UIKit-UIPopoverPresentationController

    2024-04-05 19:52:05       32 阅读
  5. Mysql数据库高级SQL

    2024-04-05 19:52:05       31 阅读
  6. MySQL面试题系列-6

    2024-04-05 19:52:05       31 阅读
  7. 【C++】每日一题 169 多数元素

    2024-04-05 19:52:05       32 阅读
  8. python之while循环

    2024-04-05 19:52:05       36 阅读
  9. leetcode:416.分割等和子集

    2024-04-05 19:52:05       37 阅读