#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位,就獲得一個八進制數。ios
(具體用法以下圖)spa