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進数を見つける必要があります。つまり
したがって、1A6のバイナリ=0001 1010 0110
16進数の2進数を見つけたら、次のタスクは2進数の8進数を見つけることです。
その前に、2進数を3つにグループ化します。 3つにグループ化すると、000 110 100 110
が得られます。その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
-
Pythonプログラムで10進数を2進数に変換する
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 10進数が与えられているので、それに相当する2進数に変換する必要があります。 与えられた問題を解決するための2つのアプローチがあります。それらを1つずつ見てみましょう- 再帰的アプローチ 例 def DecimalToBinary(num): if num > 1: DecimalToBinary(num // 2) print(num % 2, end = '') # main if _
-
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.")