2016-12-19 2 views
-1

У меня есть строка:Преобразование шестнадцатеричной строки в целое с таким же форматированием

string s = "0x10" 

Я хочу, чтобы найти способ, чтобы преобразовать это к int с тем же значением, то есть:

int x = 0x10 

Я получаю строку "0x10" из следующего кода при использовании cout << s: :

std::stringstream stream; 
stream << "0x" << hex << setw(2) << setfill('0') << int(h) << endl; 
string s = stream.str(); 

я получить правильный результат при использовании int h = 16 (который 0x10 в шестнадцатеричном)

Есть ли способ сделать это?

+2

просто так мы понимаем. Код, который вы показываете, состоит в том, чтобы сделать строку «0x10». Вы хотите знать, как конвертировать «0X10» в 16? – pm100

+1

Я думаю, что OP хочет, чтобы целое число 16 каким-то образом забыло печатать как 0x10, когда 'cout' используется для вывода. Хотя пример кода делает это более запутанным. – drescherjm

+1

'0x10 == 16 == 0b10000 == 020' Все они представляют одно и то же. Это то, как вы их показываете. – NathanOliver

ответ

-4

его обратное тому, что у вас

istringstream iss(s); 
int x; 
iss >> hex >> x; 

или std::stoi

кажется, может быть, вы запутались - говорят, что вы хотите 0x10 в междунар скорее, 16. То есть вопрос о том, как вы преобразовать int в строку. Int всегда 0b00010000 в памяти

+2

Как вы добрались до 18.1k, написав ответы вроде этого? –

+0

что я сделал неправильно?Используется ли мой istream неправильно (немного ржавый) – pm100

+0

Ваш ответ ползет к чему-то актуальному и полезному сейчас, но это, конечно же, не было изначально. Он также имеет проблемы с презентацией. inb4 «Я нахожусь на своем телефоне», тогда подождите, пока вы этого не сделаете! –

Смежные вопросы