我想在屏幕上输入最多16个十六进制字符的字符串,然后将字符串转换为bitset< 64>
到目前为止,我已经管理了以下内容
string tempString;
unsigned int tempValue;
cout << "enter addr in hex : ";
cin >> tempString;
istringstream ost(tempString);
ost >> hex >> tempValue;
bitset<32> addr(tempValue);
cout << "addr = " << addr << endl;
工作正常,但是当我重复64位时它失败了。在前面玩它似乎只能在前32位中失败!
bitset<64> wdata = 0;
if (rdnwr[0] == 0)
{
cout << "enter wdata in hex : ";
cin >> tempString;
istringstream ost1(tempString);
ost1 >> hex >> tempValue;
wdata = tempValue;
cout << "wdata = " << wdata << endl;
}
这与istringstream的最大大小有关吗?或者也许是我分配wdata的不同方式?
感谢。
答案 0 :(得分:1)
猜测,您错过了将某些内容更改为64位(位集,或者可能将int
更改为long long
)。但是,这个:
string tempString;
unsigned long long tempValue;
cout << "enter addr in hex : ";
cin >> tempString;
istringstream ost(tempString);
ost >> hex >> tempValue;
bitset<64> addr(tempValue);
cout << "addr = " << addr << endl;
...似乎有效,至少对我而言:
enter addr in hex : 0123456789abcdef
addr = 0000000100100011010001010110011110001001101010111100110111101111
[用VC ++和MinGW测试,结果相同]