如何将字符数组转换为十六进制值数组?

时间:2017-05-10 19:55:06

标签: c++ arrays char hex converter

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 []的值时,它会输出字符而不是十六进制,非常感谢帮助。

1 个答案:

答案 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