如何将十六进制数转换成C++中的字符? 我试图把十六进制数转换成C++中的字符。 我查了一下,但找不到适合我的答案

如何将十六进制数转换成C++中的字符? 我试图把十六进制数转换成C++中的字符。 我查了一下,但找不到适合我的答案,c++,string,hex,memory-editing,C++,String,Hex,Memory Editing,这是我的密码: 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 如果你在这里输入0000005B,

这是我的密码:

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

如果你在这里输入0000005B,它会输出字符[。我如何输出[?

试试这个:

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

输出应为:0x5B假设基数[0]为0000005B。

要将数字打印为字符,可以将其分配给char变量或将其强制转换为char类型:

示例程序:


因此,要返回整数值为0x5B的字符吗?请记住,大多数系统中的字符只能包含2个十六进制值。无论以哪个基显示,整数都是相同的。您的意思是基[0]是值0x5B–也就是说,91–并且您想要字符的['?如果这就是你的意思,你不需要做任何事情。数字就是数字。十六进制仅适用于我们如何将数字打印为字符串。你是在问:如何将整数转换为十六进制字符串?还是在问,如何将十六进制字符串转换回整数?@JamesGlenn'['is 91是0x5b。它们都是相同的东西。无法将其转换为字符?该语句中是否需要std::hex?编译器如何知道以十进制与十六进制打印?如果基为[0]是BYTE*还是unsigned char*,它会打印出来,否则不会。你想用printf而不是cout吗?我的理解是cout没有格式说明符字符串。我希望它打印字符[。出于某种原因,这给了我ffffff dc,而不是[。奇怪。我得到的输出是:0x5B的字符是“[和”['`。我正在Windows 7上的Cygwin上使用g++5.3.0进行编译。请参阅我的编辑。我正在使用snprintf。
unsigned int value = 0x5B;
char c = static_cast<char>(value);
cout << "The character of 0x5B is '" << c << "` and '" << static_cast<char>(value) << "'\n";
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.