Приветствую! Знаю, что вопрос очень простой, но сколько ни гуглил, осилить не могу. Собственно вопрос - есть у меня переменная, например char или int. Как мне получить строку ее представления в шестнадцатеричном виде? Очень хорошо это получается у функции printf, Код (Text): #include <stdio.h> int main(int argc, char *argv[]) { char mychar = ' '; printf("hex : 0x%x\n", mychar); // выводим "hex : 0x20" return 0; } но она сразу выводит представление на экран, а мне бы получить его внутри кода для собственного баловства.
sprintf(pbuffer, "0x%X", mychar); pbuffer - указатель, куда будет выведена строка с hex-представлением твоего char-а гугляться подобные вещи следующим образом: 1. У вас есть функция printf, она подходит, но не совсем. Вы вводите в гугл "msdn printf". Проходите по первой ссылке 2. Читаете описание функции, в самом низу страницы есть смежные функции, которые используются либо в место с описываемой либо очень похожи по функционалу, но с небольшим отличием. Их обычно внизу страницы 5-10 штук. 3. Нажимаете на каждой и ищите то, что вам нужно. Занимает весь поиск минуты 2.
Если необходим c++, то: Код (Text): #include <iostream> #include <string> #include <sstream> int main() { std::string hexstr; unsigned int number = 123; { std::stringstream s; s << "0x" << std::hex << number; hexstr = s.str(); } std::cout << hexstr << std::endl; return 0; }
Прошу прощения за некропост, но очень хочется вставить свои 5 копеек, мой метод правда предполагает получение десятичного представления числа, но разве это пролема? Код (Text): #include <iostream> using namespace std; void main() { char U='#'; int K; _asm { mov eax, 0 mov al, U mov K,eax } cout<<K<<endl; }
Вот елки - токмо забрел на форум (давно здесь не был), и уже успел получть по рукам. И главное непонятно за что, ведь код то работает, я просто по ходу дела, сам с подобными вещами сталкивался, вот и опытом делюсь.
Запусти Visual Studio и проверь! Из всех компиляторов void main() не переваривает только miniGW, но это уже флуд пошел.
я бы сказал, из всех компиляторов void main() переваривает только студия... например gcc следует стандарту: на этот код страшно смотреть... ассемблерная вставка вообще никаким боком не к месту... таки да)))
кошерней так #include <iostream> #include <string> #include <sstream> int main() { std::string hexstr; unsigned int number = 123; { std::stringstream s; s << std::hex << std::showbase << number; hexstr = s.str(); } std::cout << hexstr << std::endl; return 0; }