如何将十六进制数转换成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.