Ваш вопрос основан на ложной предпосылке; по неправильному представлению.
Адреса не являются шестнадцатеричными, десятичными, восьмеричными, двоичными или чем-либо еще.
У вас нет «шестнадцатеричного адреса» или «восьмеричного представления» для того же самого, всегда.
Адреса - это адреса.
Даже если бы они были концептуально одинаковыми с числами, они все равно не были бы шестнадцатеричными или десятичными или восьмеричное, или двоичное, или что-нибудь еще, потому что это base , используемые, когда представляет числа, то есть выводит их на экран. Они не являются свойством числа; они не являются частью его значения или типа.
Числа являются числами.
С этим, что вам нужно сделать, это получить число с адреса, затем напечатайте это число в желаемом вами представлении.
Первое просто: приведите его к std::uintptr_t
в C ++ 11 (или просто uintptr_t
в C99). Вам не нужно , нужно , чтобы использовать reinterpret_cast
для этого; вместо этого вы можете использовать приведение в стиле C. Но вам нужно сыграть. Затем выведите его так, как вам нравится, так же, как вы вывели бы любое другое число, на любую базу, какую пожелаете.
По иронии судьбы, возможно, поэтому вы думаете, что эти вещи "шестнадцатеричные" или "восьмеричные", потому что единственный способ вы можете когда-нибудь увидеть их на экране, когда кто-то сделал эти шаги для вас.