cout << "Enter a string" << endl;
cin.getline(str, 100);
char* point;
point = strtok(str, " ");
while (point != NULL){
cout << point << endl;
point = strtok(NULL, " ");
}
for (int i = 0; i < 100; ++i)
hexstr[i] = ("%hX ", str[i]);
嘿,我的程序需要能够将用户输入的字符转换为十六进制数字,例如“a”应该变为“61”。它还需要能够将十六进制转换回原始句子,但是,我坚持转换和我发现的其他文档不起作用。目前,当我尝试输出hexstr []的值时,它会输出字符而不是十六进制,非常感谢帮助。
答案 0 :(得分:0)
即使我不直接回答您的问题,我也会将此作为答案发布。问题是,我相信我们在这里有一个xy-problem,你应该重新考虑一下,如果你真的需要这样做&#34;转换&#34;,毕竟你只需要一个完全相同的值的不同表示,你已经有了。
例如考虑这个:
#include <iostream>
int main() {
char x = 'a';
char y = 97;
char z = 0x61;
if (x == y) { std::cout << "I am not sure if ";}
if (x == z) { std::cout << "you need to ";}
if (y == z) { std::cout << "convert anything ";}
std::cout << "because (char)" << x
<< "==0x" << std::hex << (int)x
<< "==" << std::dec << (int)x;
return 0;
}
会打印
I am not sure if you need to convert anything because (char)a==0x61==97
但是,如果你真的想要十六进制,那么我能想到的最简单的方法是:
#include <iostream>
#include <string>
#include <sstream>
int main() {
char x = 'a';
std::stringstream stream;
stream << std::hex << (int)x;
std::cout << stream.str();
return 0;
}
打印
61