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