Programa para Convertir Octal a Hexadecimal

Dado un número octal, la tarea es convertirlo en un número hexadecimal.

Ejemplos: 

Input:  47 
Output: 27
Explanation:
Decimal value of 47 is = (7 * 1) + (4 * 8) = 39

Now, convert this number to hexadecimal
39/16 -> quotient = 2, remainder = 7
2/16 ->  quotient = 0, remainder = 2

So, the equivalent hexadecimal number is = 27

Input: 235
Output:  9d

Enfoque:
un número octal o oct para abreviar es el número de base 8 y usa los dígitos del 0 al 7. Los números octales se pueden hacer a partir de números binarios agrupando dígitos binarios consecutivos en grupos de tres (comenzando desde la derecha).

Un número hexadecimal es un sistema de numeración posicional con una raíz o base de 16 y utiliza dieciséis símbolos distintos. Puede ser una combinación de letras y números. Utiliza números del 0 al 9 y letras de la A a la F.

Pasos de conversión:
La forma más sencilla es convertir el número octal en decimal, luego el decimal en forma hexadecimal. 

  1. Escribe las potencias de 8 (1, 8, 64, 512, 4096, etc.) al lado de los dígitos octales de abajo hacia arriba.
  2. Multiplica cada dígito por su potencia.
  3. Suma las respuestas. Esta es la solución decimal.
  4. Divide el número decimal entre 16.
  5. Obtenga el cociente entero para la próxima iteración (si el número no se divide por igual entre 16, entonces redondee el resultado al número entero más cercano).
  6. Tome nota del resto, debe estar entre 0 y 15.
  7. Repite los pasos desde el paso 4 hasta que el cociente sea igual a 0.
  8. Escribe todos los restos, de abajo hacia arriba.
  9. Convierta cualquier residuo mayor que 9 en letras hexadecimales. Esta es la solución hexadecimal.

Por ejemplo , si el número octal dado es 5123:

Dígito Energía Multiplicación
5 512 2560
1 64 64
2 8 dieciséis
3 1 3

Entonces el número decimal (2560 + 64 + 16 + 3) es: 2643

División Cociente Resto
2643/16 165 3
165/16 10 5
10/16 0 10 a)

Finalmente, el número hexadecimal es: a53

A continuación se muestra la implementación del enfoque anterior: 

C++

// C++ program to convert Octal
// to Hexadecimal
#include<bits/stdc++.h>
using namespace std;
 
// Function to convert octal to decimal
int octalToDecimal(int n)
{
    int num = n;
    int dec_value = 0;
     
    // Initializing base value
    // to 1, i.e 8^0
    int base = 1;
   
    int temp = num;
    while (temp)
    {
         
        // Extracting last digit
        int last_digit = temp % 10;
        temp = temp / 10;
         
        // Multiplying last digit with
        // appropriate base value and
        // adding it to dec_value
        dec_value += last_digit * base;
   
        base = base * 8;
    }
    return dec_value;
}
 
// Function to convert decimal
// to hexadecimal
string decToHexa(int n)
{
     
    // char array to store
    // hexadecimal number
    char hexaDeciNum[100];
     
    // counter for hexadecimal
    // number array
    int i = 0;
    while(n != 0)
    {   
         
        // Temporary variable to
        // store remainder
        int temp  = 0;
           
        // Storing remainder in
        // temp variable.
        temp = n % 16;
           
        // Check if temp < 10
        if (temp < 10)
        {
            hexaDeciNum[i] = temp + 48;
            i++;
        }
        else
        {
            hexaDeciNum[i] = temp + 87;
            i++;
        }
        n = n / 16;
    }
     
    string ans = "";
       
    // Printing hexadecimal number array
    // in reverse order
    for(int j = i - 1; j >= 0; j--)
    {
        ans += hexaDeciNum[j];
    }
    return ans;
}
 
// Driver Code
int main()
{
    string hexnum;
    int decnum, octnum;
     
    // Taking 5123 as an example of
    // Octal Number.
    octnum = 5123;
     
    // Convert Octal to Decimal
    decnum = octalToDecimal(octnum);
     
    // Convert Decimal to Hexadecimal
    hexnum = decToHexa(decnum);
     
    cout << "Equivalent Hexadecimal Value = "
         << hexnum << endl;
}
 
// This code is contributed by pratham76

Java

// Java Program to Convert Octal
// to Hexadecimal
 
import java.util.Scanner;
 
public class JavaProgram {
    public static void main(String args[])
    {
        String octnum, hexnum;
        int decnum;
        Scanner scan = new Scanner(System.in);
         
        // Taking 5123 as an example of
        // Octal Number.
        octnum = "5123";
         
        // Convert Octal to Decimal
        decnum = Integer.parseInt(octnum, 8);
         
        // Convert Decimal to Hexadecimal
        hexnum = Integer.toHexString(decnum);
 
        System.out.print("Equivalent Hexadecimal Value = "
                                                + hexnum);
    }
}

Python3

# Python3 program to convert octal
# to hexadecimal
 
# Taking 5123 as an example of
# octal number
octnum = "5123"
 
# Convert octal to decimal
decnum = int(octnum, 8)
 
# Convert decimal to hexadecimal
hexadecimal = hex(decnum).replace("0x", "")
 
# Printing the hexadecimal value
print("Equivalent Hexadecimal Value =", hexadecimal)
 
# This code is contributed by virusbuddah_

C#

// C# Program to Convert Octal
// to Hexadecimal
using System;
class GFG{
     
// Function to convert octal
// to decimal
static int octalToDecimal(int n)
{
  int num = n;
  int dec_value = 0;
 
  // Initializing base value 
  // to 1, i.e 8^0
  int b_ase = 1;
 
  int temp = num;
  while (temp > 0) 
  {
    // Extracting last digit
    int last_digit = temp % 10;
    temp = temp / 10;
 
    // Multiplying last digit 
    // with appropriate base 
    // value and adding it to 
    // dec_value
    dec_value += last_digit * b_ase;
 
    b_ase = b_ase * 8;
  }
   
  return dec_value;
}
 
// Function to convert decimal
// to hexadecimal
static string decToHexa(int n)
{ 
  // char array to store 
  // hexadecimal number
  char []hexaDeciNum = new char[100];
 
  // counter for hexadecimal
  // number array
  int i = 0;
  string ans = "";
 
  while(n != 0)
  { 
    // temporary variable to 
    // store remainder
    int temp = 0;
 
    // storing remainder
    // in temp variable.
    temp = n % 16;
 
    // check if temp < 10
    if(temp < 10)
    {
      hexaDeciNum[i] = (char)(temp + 48);
      i++;
    }
    else
    {
      hexaDeciNum[i] = (char)(temp + 87);
      i++;
    }
 
    n = n / 16;
  }
 
  for(int j = i - 1; j >= 0; j--)
  {
    ans += hexaDeciNum[j];
  }
   
  return ans;
}
   
// Driver code
public static void Main(string []args)
{
  string octnum, hexnum;
  int decnum;
 
  // Taking 5123 as an
  // example of Octal Number.
  octnum = "5123";
 
  // Convert Octal to Decimal
  decnum = octalToDecimal(Int32.Parse(octnum));
 
  // Convert Decimal to Hexadecimal
  hexnum = decToHexa(decnum);
 
  Console.Write("Equivalent Hexadecimal Value = " +
                 hexnum);
}
}
 
// This code is contributed by rutvik_56

Javascript

// JavaScript program to convert Octal
// to Hexadecimal
 
 
// Function to convert octal to decimal
function octalToDecimal( n)
{
    var num = n;
    var dec_value = 0;
     
    // Initializing base value
    // to 1, i.e 8^0
    var base = 1;
   
    var temp = num;
    while (temp > 0)
    {
        // Extracting last digit
        var last_digit = temp % 10;
        temp = Math.floor(temp / 10);
         
        // Multiplying last digit with
        // appropriate base value and
        // adding it to dec_value
        dec_value += last_digit * base;
   
        base = base * 8;
    }
    return dec_value;
}
 
// Function to convert decimal
// to hexadecimal
function decToHexa( n)
{
     
    // char array to store
    // hexadecimal number
    var hexaDeciNum = new Array(100);
     
    // counter for hexadecimal
    // number array
    var i = 0;
    while(n != 0)
    {   
         
        // Temporary variable to
        // store remainder
        var temp  = 0;
           
        // Storing remainder in
        // temp variable.
        temp = n % 16;
           
        // Check if temp < 10
        if (temp < 10)
        {
            hexaDeciNum[i] = temp + 48;
            i++;
        }
        else
        {
            hexaDeciNum[i] = temp + 87;
            i++;
        }
        n = Math.floor(n / 16);
    }
     
    var ans = "";
       
    // Printing hexadecimal number array
    // in reverse order
    for(var j = i - 1; j >= 0; j--)
    {
        ans += String.fromCharCode(hexaDeciNum[j]);
    }
    return ans;
}
 
// Driver Code
var hexnum;
var decnum, octnum;
     
// Taking 5123 as an example of
// Octal Number.
octnum = 5123;
     
// Convert Octal to Decimal
decnum = octalToDecimal(octnum);
     
// Convert Decimal to Hexadecimal
hexnum = decToHexa(decnum);
 
console.log("Equivalent Hexadecimal Value = " + hexnum);
 
 
// This code is contributed by phasing17
Producción: 

Equivalent Hexadecimal Value = a53

 

Publicación traducida automáticamente

Artículo escrito por adware y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *