將16進製制數轉換為8進製數輸出 演算法

2021-10-01 15:04:27 字數 1713 閱讀 8001

給定n個十六進製制正整數,輸出它們對應的八進位制數。

輸入格式

輸入的第一行為乙個正整數n (1<=n<=10)。

接下來n行,每行乙個由09、大寫字母af組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。

輸出格式

輸出n行,每行為輸入對應的八進位制正整數。

將16進製制逐位轉換為4位2進製,然後再3位一組,轉換為8進製數

注意:如果字串的擷取與拼接以及採用合適的符合題意的方式輸出

完整**

#include

#include

#include

#include

#include

//用於實現string >> int

#include

//數學函式

#include

using

namespace std;

//首位填充0元素

string makeup

(string str,

int num)

else

return str;

}//2進製轉8進製

string bittooct

(string str)

str=

"\0"

;//字串清空

ss>oct;

ss.clear()

;//務必清除,否則會出錯

new_oct+

=oct;

//字串拼接

}else

str=str.

substr(0

,str.

length()

-3);

//刪除後三位

ss>oct;

ss.clear()

;//務必清除,否則會出錯

new_oct+

=oct;

//字串拼接}}

return new_oct;

}//16進製制轉換2進製,此處注意:不足4位補齊四位

string hextobit

(char c)

//倒置輸出

string indoutput

(string str)

else

}return oct;

}int

main()

cout<<

indoutput

(bittooct

(bit)

)

bit=

"\0"

;//bit清空

}}

2

76941fab

16645017653

----

----

----

----

----

----

----

----

process exited after 12.85 seconds with return value 0

關於進製的轉換,字元轉換後拼接尤為重要,而且得將他們先轉為2進製,而16>>2,一位變四位,2>>,3位變一位,其中關於不夠位的採取首項補0方式,這也是需要考慮到的。總之本次的進製轉換不是最優的,會在下一次完善,可累死我了。

將十進位制數M轉換為N進製數

題目描述 給定乙個十進位制數m,以及需要轉換的進製數n。將十進位制數m轉化為n進製數。exp 輸入 輸入為一行,m 32位整數 n 2 n 16 以空格隔開,如7,2。輸出 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果n大於9,則對應的數字規則參考16進製制 比如,10用a表示,等等 如111...

將數字轉換為16進製制

給定乙個整數,寫乙個函式將其轉換為16進製制。對於負整數,需要使用二進位制補碼。樣例1 輸入 26 輸出 1a 樣例2 輸入 1 輸出 ffffffff 16進製制的所有字母 a f 必須為小寫。16進製制字串不能包含額外的前導0。如果數字為零,將它表示為單個字元 0 否則,16進製制數的第乙個字元...

c語言將十進位制數轉換為16進製制的函式

有3種方式實現,其中兩種是使用系統函式,另一種是直接自己編寫。使用系統函式實現要加入 include 自己編寫則不需要這個標頭檔案。下面的 就是3種方式的實現,包括2位的整數和任意整數 2的31次方以內 都可以。可自己選擇需要的實現方式。利用系統函式有 1.char itoa int value,c...