0
我明白整數存儲在二進制表示法,但我不知道這將如何影響他們的閱讀 - 比如:整數存儲 - 十六進制/八
假設
cin.unsetf(ios::dec); cin.unsetf(ios::hex); and cin.unsetf(ios::oct);
用戶輸入
0x43
它們存儲爲整數。現在假設程序想要將這些值識別爲十六進制,十進制或十進制,並執行類似的操作。
void number_sys(int num, string& s)
{
string number;
stringstream out;
out << num;
number = out.str();
if(number[0] == '0' && (number[1] != 'x' && number[1] != 'X')) s = "octal";
else if(number[0] == '0' && (number[1] == 'x' || number[1] == 'X')) s = "hexadecimal";
else s = "decimal";
}
函數將讀取所有整數作爲十進制。我在字符串轉換後輸入一些測試代碼來輸出字符串,而字符串是十進制形式的數字。我想知道整數是否有一種方法來保留它們的基本符號。
當然,你可以輸入數字作爲字符串和測試的方式,但後來有讀取字符串作爲int的問題。
例如:
string a = 0x43;
int num = atoi(a.c_str());
cout << num; // will output 43
好像保存/轉化基地符號可能會非常棘手。作爲一個額外的問題,十六進制,十進制和十進制操作符甚至不會幫助解決上面顯示的問題,因爲整數存儲完全不正確,甚至不能轉換爲小數。
未使用二進制表示法存儲與存儲爲二進制數字相同的內容。 – trikker 2009-07-28 17:59:01