C語言程式:將十六進位制轉換為八進位制
我們得到一個以字串形式表示的十六進位制數;任務是將其轉換為八進位制。要將十六進位制數轉換為八進位制,我們需要:
- 找到十六進位制數的二進位制等價形式。
- 將二進位制數轉換為八進位制。
什麼是十六進位制數
十六進位制數是以16為基數的數字,數字範圍從0到9,從10開始,數字表示為A表示10,B表示11,C表示12,D表示13,E表示14,F表示15。
要將十六進位制數轉換為二進位制數,每個數字都轉換為其4位的二進位制等價形式,然後將這些數字組合起來形成一個對應的二進位制數。
什麼是八進位制數
計算機中的八進位制數以8為基數表示,範圍為0到7,八進位制數由三個二進位制數或三個二進位制位組成。
我們需要做什麼
例如,我們有一個十六進位制數1A6,這意味著1、10和6。現在,對於十六進位制到八進位制的轉換,我們首先需要找到十六進位制數的二進位制等價形式,即:

所以,1A6的二進位制表示為:0001 1010 0110
現在,在找到十六進位制數的二進位制表示後,下一步任務是找到二進位制數的八進位制表示。
在此之前,我們將二進位制數分組為三個一組。分組後,我們將得到000 110 100 110
其八進位制表示為:

所以,十六進位制數1A6的八進位制表示為:646
示例
Input: 1A6 Output: Octal Value = 646 Explanation: Input: 1AA Output: 652
我們將使用的方法來解決給定的問題:
- 獲取輸入並將其儲存為字串。
- 按照以下方法將十六進位制數或表示式轉換為二進位制:
- 檢查所有16種十六進位制情況,並新增其相應的二進位制表示。
- 返回結果。
- 將二進位制數轉換為八進位制數,請按照以下步驟操作:
- 透過比較二進位制數到八進位制的所有可能情況,取3位。
- 設定八進位制的值 = (val * place) + octal;
- 將二進位制數除以1000
- place *= 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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP