#include<iostream> using namespace std; int main() { string s8; cin >> s8; //輸入八進制數 int s2[1000]; int j = 0; for (int i = s8.size() - 1;i >= 0;i--) { //八進制轉二進制 int flag = 0; int a = s8[i] - 48; //減48是因為要將字符串的ASCII碼轉為整數 while (a != 0) {//輾轉相除 s2[j] = a % 2; j++; flag++; a = a / 2; } if (flag < 3) { //每個八進制數可轉為3個二進制數,若轉換后為2位,則高位補0 s2[j] = 0; j++; } } //轉換之后倒序輸出,若高位數為0,則不輸出 int b = (s8.size() * 3) - 1; if (s2[b] != 0) cout << s2[b]; for (int k = (s8.size() * 3)-2;k >= 0;k--) { cout << s2[k]; } return 0; }
二進制數轉換成八進制數:從小數點開始,整數部分向左、小數部分向右,每3位為一組用一位八進制數的數字表示,不足3位的要用“0”補足3位,就得到一個八進制數。
(具體用法如下圖)
