строка — Как я могу преобразовать шестнадцатеричные числа в символ в C ++?

Я пытаюсь преобразовать шестнадцатеричное число в символ в C ++.
Я искал это, но я не могу найти ответ, который работает для меня.

Вот мой код:

char mod_tostring(int state, int index, int size) {
int stringAddress = lua_tolstring(state, index, 0);
const char* const Base = (const char* const)stringAddress;
return Base[0];
};

Base [0] вернет шестнадцатеричное число вроде:
0000005B

Если вы идете сюда http://string-functions.com/hex-string.aspx и положить 0000005B в качестве входных данных, он выводит символ «[». Как бы я также вывести [?

0

Решение

Чтобы напечатать число как символ, вы можете присвоить его char переменная или приведение к char тип:

unsigned int value = 0x5B;
char c = static_cast<char>(value);
cout << "The character of 0x5B is '" << c << "` and '" << static_cast<char>(value) << "'\n";

Вы также можете использовать snprintf:

char text_buffer[128];
unsigned int value = 0x5B;
snprintf(&text_buffer[0], sizeof(text_buffer),
"%c\n", value);
puts(text_buffer);

Пример программы:

#include <iostream>
#include <cstdlib>

int main()
{
unsigned int value = 0x5B;
char c = static_cast<char>(value);
std::cout << "The character of 0x5B is '" << c << "` and '" << static_cast<char>(value) << "'\n";

std::cout << "\n"<< "Paused.  Press Enter to continue.\n";
std::cin.ignore(1000000, '\n');
return EXIT_SUCCESS;
}

Выход:

$ ./main.exe
The character of 0x5B is '[` and '['

Paused.  Press Enter to continue.
0

Другие решения

Попробуй это:

std::cout << "0x%02hX" << Base[0] << std::endl;

Выход должен быть: 0x5B при условии, что Base [0] — 0000005B.

-2

По вопросам рекламы [email protected]