Conversión base de lenguaje C (completa)


Convertir a binario:

Decimal a binario (10➤2)

Un número decimal se puede convertir en un número binario tomando continuamente el resto de 10 y desplazando los dígitos binarios hacia la izquierda. Los pasos específicos son los siguientes:

1. Defina una matriz para almacenar números binarios.
2. Defina una variable para registrar el subíndice de la matriz.
3. Recorra el resto de 10 hasta que 10 sea 0.
4. Cada vez que se toma el resto, se almacena en la matriz.
5. Agregue 1 al subíndice de la matriz después de tomar cada resto.
6. Finalmente, genere la matriz en orden inverso.

El código se muestra a continuación.

#include <stdio.h>

int main()
{
    
    
    int decimal, remainder, index = 0;
    int binary[32];
    
    printf("请输入一个十进制数:");
    scanf("%d", &decimal);
    
    while (decimal != 0)
    {
    
    
        remainder = decimal % 2;
        binary[index] = remainder;
        index++;
        decimal /= 2;
    }
    
    printf("转换为二进制数为:");
    for (int i = index - 1; i >= 0; i--)
    {
    
    
        printf("%d", binary[i]);
    }
    
    return 0;
}

Hexadecimal a binario (16➤2)

La conversión de un número hexadecimal a un número binario se realiza mediante la instrucción de cambio y la operación de bits de un número hexadecimal. Específicamente, el programa atraviesa cada carácter del número hexadecimal de entrada y luego usa la etiqueta de caso correspondiente de acuerdo con el valor del carácter para agregar el número binario correspondiente a la salida.

El código se muestra a continuación.

#include <stdio.h>

int main() {
    
    
    char hex[17];
    int i = 0;

    // 读入16进制数
    printf("请输入16进制数:");
    scanf("%s", hex);

    printf("对应的2进制数为:");
    while (hex[i]) {
    
    
        switch (hex[i]) {
    
    
            case '0':
                printf("0000");
                break;
            case '1':
                printf("0001");
                break;
            case '2':
                printf("0010");
                break;
            case '3':
                printf("0011");
                break;
            case '4':
                printf("0100");
                break;
            case '5':
                printf("0101");
                break;
            case '6':
                printf("0110");
                break;
            case '7':
                printf("0111");
                break;
            case '8':
                printf("1000");
                break;
            case '9':
                printf("1001");
                break;
            case 'A':
            case 'a':
                printf("1010");
                break;
            case 'B':
            case 'b':
                printf("1011");
                break;
            case 'C':
            case 'c':
                printf("1100");
                break;
            case 'D':
            case 'd':
                printf("1101");
                break;
            case 'E':
            case 'e':
                printf("1110");
                break;
            case 'F':
            case 'f':
                printf("1111");
                break;
            default:
                printf("\n错误:无效的16进制数!\n");
                return 0;
        }
        i++;
    }

    return 0;
}

Después de ejecutar el programa, ingrese el número hexadecimal que se convertirá y el programa generará el número binario correspondiente. Tenga en cuenta que el programa solo puede procesar números hexadecimales con letras mayúsculas o minúsculas. Si la cadena de entrada contiene otros caracteres, el programa mostrará un número hexadecimal no válido.

Octal a binario (8➤2)

1. Primero, obtenga un número octal del usuario.
2. En el ciclo while, simulamos el proceso de conversión binaria.
3. En cada iteración, almacene el último dígito del número octal en la variable rem.
4. Luego conviértalo a binario y agréguelo a la variable num_binario.
5. La variable base se utiliza para calcular cada dígito de un número binario.
6. Finalmente, imprima el número binario generado.

El código se muestra a continuación.

#include <stdio.h>

int main() {
    
    
    int octal_num, binary_num = 0, base = 1, rem;
    printf("Enter an octal number: ");
    scanf("%d", &octal_num);
    while (octal_num > 0) {
    
    
        rem = octal_num % 10;
        binary_num += rem * base;
        base *= 2;
        octal_num /= 10;
    }
    printf("Binary number: %d", binary_num);
    return 0;
}

Convertir a hexadecimal

Binario a hexadecimal (2➤16)

En lenguaje C, puede utilizar la función printf y el carácter de control de cadena de formato para implementar la conversión de binario a hexadecimal.

El código se muestra a continuación.

#include <stdio.h>

int main()
{
    
    
    int binary = 10101110; // 二进制数
    int hex = 0; // 十六进制数
    int i = 0;
    
    while (binary != 0) {
    
    
        // 将每四位二进制数转换为一个十六进制数
        hex += (binary % 10) * (1 << i); 
        binary /= 10;
        i += 4;
    }
    
    printf("0x%x", hex); // 输出十六进制数
    
    return 0;
}

En el código anterior, 10101110 es un número binario de 8 bits y cada cuatro dígitos binarios corresponde a un número hexadecimal. En el bucle, el número binario de cuatro dígitos más bajo se extrae cada vez, el número hexadecimal correspondiente se calcula mediante una operación de desplazamiento y luego se acumula en la variable hexadecimal. Finalmente, use el carácter de control de cadena de formato %x para generar un número hexadecimal. El resultado de salida es 0xae.

Octal a hexadecimal (8➤16)

En lenguaje C, puede utilizar la función sprintf() para convertir octal a hexadecimal.

El código se muestra a continuación.

#include <stdio.h>

int main()
{
    
    
    int octal = 037;
    char hex[10];
    sprintf(hex, "%X", octal);

    printf("%o in octal is %s in hexadecimal.\n", octal, hex);

    return 0;
}

El resultado es: 37 en octal es 1F en hexadecimal.

Decimal a hexadecimal (10➤16)

Puede usar la función sprintf para convertir el número decimal en una cadena hexadecimal y luego usar la función printf para generarlo.

#include <stdio.h>

int main()
{
    
    
    int dec = 336;
    char hex[10];
    sprintf(hex, "%X", dec); // 将十进制数转成十六进制字符串
    printf("%s\n", hex); // 输出十六进制数
    return 0;
}

Nota: El primer parámetro de la función sprintf es una matriz de caracteres, no un puntero, porque almacena la cadena convertida en la matriz. Cuando utilice la función sprintf, debe asegurarse de que la matriz de caracteres de destino sea lo suficientemente grande para acomodar la cadena convertida. En este ejemplo, el tamaño de la matriz de caracteres hexadecimal de destino es 10, que es suficiente para almacenar la representación hexadecimal de cualquier entero de 32 bits.

Convertir a octal

Binario a octal (2➤8)

El código se muestra a continuación.

#include <stdio.h>

int main() {
    
    
    long long binaryNumber;
    int octalNumber = 0, decimalNumber = 0, i = 0;

    printf("输入一个二进制数: ");
    scanf("%lld", &binaryNumber);

    // 将二进制转换为十进制
    while (binaryNumber != 0) {
    
    
        decimalNumber += (binaryNumber % 10) * pow(2, i);
        ++i;
        binaryNumber /= 10;
    }

    i = 1;

    // 将十进制转换为八进制
    while (decimalNumber != 0) {
    
    
        octalNumber += (decimalNumber % 8) * i;
        decimalNumber /= 8;
        i *= 10;
    }

    printf("转换为八进制数为: %d", octalNumber);

    return 0;
}

En este programa, hemos utilizado dos bucles while: uno para convertir un número binario en un número decimal y otro para convertir un número decimal en un número octal. En el primer ciclo while, convertimos un número binario en un número decimal multiplicando el número en cada bit con una potencia de 2. En el segundo ciclo while, convertimos el número decimal a octal calculando el producto del número en cada bit por la potencia de 8. Finalmente, usamos la función printf para generar el resultado convertido a un número octal.

Decimal a octal (10➤8)

El código se muestra a continuación.

#include <stdio.h>

void DecimalToOctal(int decimalNumber)
{
    
    
    int octalNumber = 0, i = 1;
  
    // 从十进制数开始迭代
    while (decimalNumber != 0)
    {
    
    
        octalNumber += (decimalNumber % 8) * i;
        decimalNumber /= 8;
        i *= 10;
    }
  
    printf("转换后的八进制数为: %d", octalNumber);
}

int main()
{
    
    
    int decimalNumber;
  
    printf("请输入一个十进制数: ");
    scanf("%d", &decimalNumber);
  
    DecimalToOctal(decimalNumber);
  
    return 0;
}

Este programa toma un número decimal como entrada, lo convierte en un número octal usando un bucle while y finalmente lo imprime. El número decimal ingresado por el usuario se puede leer desde la consola a través de la función scanf.

Hexadecimal a octal (16➤8)

El código se muestra a continuación.

#include <stdio.h>

int main()
{
    
    
    char hex_num[10], oct_num[10];
    int i, j, k, digit;
    long int dec_num = 0, octal_num = 0;

    printf("Enter a hexadecimal number: ");
    scanf("%s", hex_num);

    // Converting hexadecimal to decimal
    for(i = 0; hex_num[i] != '\0'; i++)
    {
    
    
        if(hex_num[i] >= '0' && hex_num[i] <= '9')
            digit = hex_num[i] - '0';
        else if(hex_num[i] >= 'A' && hex_num[i] <= 'F')
            digit = hex_num[i] - 'A' + 10;
        else if(hex_num[i] >= 'a' && hex_num[i] <= 'f')
            digit = hex_num[i] - 'a' + 10;

        dec_num = 16 * dec_num + digit;
    }

    // Converting decimal to octal
    for(j = 0; dec_num != 0; j++)
    {
    
    
        oct_num[j] = dec_num % 8 + '0';
        dec_num /= 8;
    }

    // Reversing the octal number
    for(k = j - 1; k >= 0; k--)
    {
    
    
        octal_num = 10 * octal_num + (oct_num[k] - '0');
    }

    printf("The octal equivalent of %s is %ld.\n", hex_num, octal_num);

    return 0;
}

El programa primero recibe un número hexadecimal del usuario, lo convierte a un número entero (decimal), luego lo convierte a un número octal y genera el resultado. El programa utiliza un bucle para calcular el valor decimal de un número hexadecimal y otro bucle para calcular el valor octal de ese número decimal. Finalmente, el programa invierte el número octal e imprime el resultado.

Por ejemplo:

  • Lunes a Viernes 7pm - 9pm
  • Sábado 9 am-11 am
  • Domingo 3pm-6pm

Convertir a decimal

Binario a decimal (2➤10)

Puede utilizar la función strtol() en lenguaje C para convertir una cadena binaria a decimal

long strtol(const char *nptr, char **endptr, int base);

Entre ellos, nptr representa la cadena que se va a convertir, endptr representa la posición del puntero después de que se completa la conversión y base representa el número base del número convertido, generalmente 2, 8, 10 o 16.

El código se muestra a continuación.

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

int main()
{
    
    
    char binary[] = "10101";
    char *endptr;
    long decimal = strtol(binary, &endptr, 2);
    printf("Binary: %s, Decimal: %ld\n", binary, decimal);
    return 0;
}

Octal a decimal (8➤10)

  • La variable octal almacena el número octal ingresado.
  • La variable decimal almacena el número decimal convertido,
  • La variable i se usa para calcular el número de potencia correspondiente y la función pow () se usa para calcular el valor de potencia.
  • Luego, en el ciclo while, se utiliza para la conversión el método de multiplicar cada dígito por la potencia correspondiente.
  • Finalmente genera el resultado.

El código se muestra a continuación.

#include <stdio.h>
#include <math.h>

int main() {
    
    
    int octal, decimal = 0, i = 0;

    printf("请输入一个八进制数:");
    scanf("%o", &octal);

    while (octal != 0) {
    
    
        decimal += (octal % 10) * pow(8, i);
        ++i;
        octal /= 10;
    }

    printf("八进制数 %o 转换为十进制数为 %d", octal, decimal);

    return 0;
}

Hexadecimal a decimal (16➤10)

Puede utilizar la función strtol en lenguaje C para convertir una cadena hexadecimal en un número decimal.

long int strtol(const char *str, char **endptr, int base);

Entre ellos, el primer parámetro str es la cadena que necesita ser convertida, el segundo parámetro endptr es un puntero a un puntero de carácter, usado para almacenar la parte no procesada después de la conversión, el tercer parámetro base es la base numérica después de la conversión. 16 se utiliza para representar hexadecimal.
El código se muestra a continuación.

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

int main() {
    
    
    char hex[] = "1A"; // 十六进制字符串
    long int dec = strtol(hex, NULL, 16); // 转换为十进制数
    printf("%ld\n", dec); // 输出十进制数
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/weixin_43798715/article/details/131412431
Recomendado
Clasificación