Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

Cプログラムで16進数を8進数に変換するプログラム


文字列として16進数が与えられます。タスクはそれを8進数に変換することです。 16進数を8進数に変換するには、-

を実行する必要があります。
  • 16進数に相当する2進数を見つけます。
  • 2進数を8進数に変換します。

16進数とは

16進数は、16を底とする数で、0から9まで変化し、10以降は、Aが10を表し、Bが11を表し、Cが12を表し、Dが13を表し、Eが14を表します。 15の場合。

16進数を2進数に変換するには、すべての数値を4ビットに相当する2進数に変換し、その後、これらの数値を組み合わせて1つの対応する2進数を形成します。

8進数とは

コンピューターの8進数は、基数8で表されます。0〜7の8進数は、3つの2進数または3つの2進数をグループ化して作成されます。

私たちがしなければならないこと

16進数の1A6があるように、1、10、6を意味します。ここで、16進数から8進数の場合、最初に16進数に相当する2進数を見つける必要があります。つまり

Cプログラムで16進数を8進数に変換するプログラム

したがって、1A6のバイナリ=0001 1010 0110

16進数の2進数を見つけたら、次のタスクは2進数の8進数を見つけることです。

その前に、2進数を3つにグループ化します。 3つにグループ化すると、000 110 100 110

が得られます。

その8進表現は-

になります

Cプログラムで16進数を8進数に変換するプログラム

したがって、16進数1A6の8進数表現は-646

です。

Input: 1A6
Output: Octal Value = 646
Explanation:

Input: 1AA
Output: 652

与えられた問題を解決するために使用するアプローチ-

  • 入力を取得して文字列として保存します。
  • 次のアプローチに従って、16進数または式を2進数に変換します-
    • それぞれのバイナリ表現を追加して、16進数の16のケースすべてを確認します。
    • 結果を返します。
  • 2進数を8進数に変換するには、次の手順に従います-
    • 2進数と8進数の考えられるすべてのケースを比較して、3つの場所を取ります。
    • 8進数の値を設定=(val * place)+8進数;
    • 2進数を1000で割ります
    • 場所*=10
  • 結果を返します。

アルゴリズム

Start
Step 1-> In function long long int hexa_binary(char hex[])
   Declare variables binary, place
   Declare and initialize i = 0, rem, val
   Initialize t n = strlen(hex)
   Initialize binary = 0ll and place = 0ll
   Loop For i = 0 and hex[i] != '\0' and i++ {
      binary = binary * place;
      switch (hex[i]) {
         case '0':
            binary += 0
         case '1':
            binary += 1
         case '2':
            binary += 10
         case '3':
            binary += 11
         case '4':
            binary += 100
         case '5':
            binary += 101
         case '6':
            binary += 110
         case '7':
            binary += 111
         case '8':
            binary += 1000
         case '9':
            binary += 1001
         case 'a':
         case 'A':
            binary += 1010
         case 'b':
         case 'B':
            binary += 1011
         case 'c':
         case 'C':
            binary += 1100
         case 'd':
         case 'D':
            binary += 1101;
            break;
         case 'e':
         case 'E':
            binary += 1110;
            break;
         case 'f':
         case 'F':
            binary += 1111;
            break;
         default:
            printf("Invalid hexadecimal input.");
      }
      place = 10000;
   }
   return binary;
}
long long int binary_oct(long long binary) {
   long long int octal, place;
   int i = 0, rem, val;
   octal = 0ll;
   place = 0ll;
   place = 1;
   while (binary > 0) {
      rem = binary % 1000;
      switch (rem) {
      case 0:
         val = 0;
         break;
      case 1:
         val = 1;
         break;
      case 10:
         val = 2;
         break;
      case 11:
         val = 3;
         break;
      case 100:
         val = 4;
         break;
      case 101:
         val = 5;
         break;
      case 110:
         val = 6;
         break;
      case 111:
         val = 7;
         break;
      }
      octal = (val * place) + octal;
      binary /= 1000;
      place *= 10;
   }
   return octal;
}
long long int hexa_oct(char hex[]) {
   long long int octal, binary;
   // convert HexaDecimal to Binary
   binary = hexa_binary(hex);
   // convert Binary to Octal
   octal = binary_oct(binary);
   return octal;
}
int main() {
   char hex[20] = "1a99";
   printf("Octal Value = %lld", hexa_oct(hex));
   return 0;
}

#include <stdio.h>
#include <string.h>
#include <math.h>
//To convert hex to binary first
long long int hexa_binary(char hex[]) {
   long long int binary, place;
   int i = 0, rem, val;
   int n = strlen(hex);
   binary = 0ll;
   place = 0ll;
   for (i = 0; hex[i] != '\0'; i++) {
      binary = binary * place;
      switch (hex[i]) {
      case '0':
         binary += 0;
         break;
      case '1':
         binary += 1;
         break;
      case '2':
         binary += 10;
         break;
      case '3':
         binary += 11;
         break;
      case '4':
         binary += 100;
         break;
      case '5':
         binary += 101;
         break;
      case '6':
         binary += 110;
         break;
      case '7':
         binary += 111;
         break;
      case '8':
         binary += 1000;
         break;
      case '9':
         binary += 1001;
         break;
      case 'a':
      case 'A':
         binary += 1010;
         break;
      case 'b':
      case 'B':
         binary += 1011;
         break;
      case 'c':
      case 'C':
         binary += 1100;
         break;
      case 'd':
      case 'D':
         binary += 1101;
         break;
      case 'e':
      case 'E':
         binary += 1110;
         break;
      case 'f':
      case 'F':
         binary += 1111;
         break;
      default:
         printf("Invalid hexadecimal input.");
      }
      place = 10000;
   }
   return binary;
}
//To convert binary to octal
long long int binary_oct(long long binary) {
   long long int octal, place;
   int i = 0, rem, val;
   octal = 0ll;
   place = 0ll;
   place = 1;
   // giving all binary numbers for octal conversion
   while (binary > 0) {
      rem = binary % 1000;
      switch (rem) {
      case 0:
         val = 0;
         break;
      case 1:
         val = 1;
         break;
      case 10:
         val = 2;
         break;
      case 11:
         val = 3;
         break;
      case 100:
         val = 4;
         break;
      case 101:
         val = 5;
         break;
      case 110:
         val = 6;
         break;
      case 111:
         val = 7;
         break;
      }
      octal = (val * place) + octal;
      binary /= 1000;
      place *= 10;
   }
   return octal;
}
// to convert the hexadecimal number to octal
long long int hexa_oct(char hex[]) {
   long long int octal, binary;
   // convert HexaDecimal to Binary
   binary = hexa_binary(hex);
   // convert Binary to Octal
   octal = binary_oct(binary);
   return octal;
}
//main function
int main() {
   char hex[20] = "5CD";
   printf("Octal Value = %lld", hexa_oct(hex));
   return 0;
}

出力

Octal Value = 2715

  1. Pythonプログラムで10進数を2進数に変換する

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 10進数が与えられているので、それに相当する2進数に変換する必要があります。 与えられた問題を解決するための2つのアプローチがあります。それらを1つずつ見てみましょう- 再帰的アプローチ 例 def DecimalToBinary(num):    if num > 1:       DecimalToBinary(num // 2)    print(num % 2, end = '') # main if _

  2. Pythonを使用して10進数を2進数、8進数、16進数に変換する方法は?

    Pythonは、DecimalをBinary、Octal、およびHexadecimalに変換するための簡単な関数を提供します。これらの関数は-です Binary: bin() Octal: oct() Hexadecimal: hex() 例 これらの関数を次のように使用して、対応する表現を取得できます- decimal = 27 print(bin(decimal),"in binary.") print(oct(decimal),"in octal.") print(hex(decimal),"in hexadecimal.")