获取字符串中的每个字符并将其转换为 Hex c++?

Posted

技术标签:

【中文标题】获取字符串中的每个字符并将其转换为 Hex c++?【英文标题】:Take each character in a string and convert it to Hex c++? 【发布时间】:2015-06-15 16:20:39 【问题描述】:

我正在尝试将用户输入作为字符串并将每个单独的元素转换为其十六进制等效项,作为 C++ 中的无符号字符。例如,我想获取用户输入“CL”并将其转换为存储在无符号字符中的 0x43 和 0x4C。

string ui;
unsinged char uihex;

cout << "Please enter in command to execute: ";
cin >> ui;
for (int i=0; i<ui.length()-1; i++)

    uihex = static_cast<unsigned char>(ui);

【问题讨论】:

好的,这是一个很好的初学者作业。你试过什么了?您在哪些部分有问题?哦,stackowerflow.com 不是一个“给我代码”的网站,你需要自己付出一些努力。 您不需要转换。这些值是字符的 ASCII 值。只需读入数据。 我将添加我在上面尝试过的内容。 更新您的帖子以获取代码。 不要在评论中输入代码,代码属于您的问题。 我已经添加了我上面尝试过的基本代码。对不起,我是新手 【参考方案1】:

如果您想打印 十六进制值,您需要将char 变量转换为整数类型。这将帮助编译器选择正确的打印函数:

char c = 'C';
cout << "0x" << hex << ((unsigned int) c) << endl;

【讨论】:

我试图将值存储为十六进制,以便我可以通过函数传递它。 十六进制是变量内部表示的一种解释,在传递给函数时不需要转换表示(字符串类型除外)。您将变量传递给的函数的签名是什么? UARTwrite(bytes_to_write, &uihex),其中 bytes_to_write 是 int 而 uihex 是 unsigned char。 调用函数时使用static_cast&lt;unsigned char *&gt;(&amp;uihex)【参考方案2】:

我正在尝试将用户输入作为字符串并转换每个 将单个元素转换为其十六进制等效项,作为 C++ 中的无符号字符。 例如,我想获取用户输入“CL”并将其转换为 0x43 和 0x4C 存储在无符号字符中。

不需要转换。

char KAR = 'A'; // a char from the file
int  iKAR = static_cast<int>(KAR); // cast to an int
//
std::cout << "\nltr    hex      dec" << std::endl;
std::cout << KAR << "  == "    
          << " 0x" << std::hex     // change to hex radix
          << iKAR                  // hex: KAR cast to an int
          << "  ==  " << std::dec  // change to decimal radix
          << iKAR                  // decimal: KAR cast to an int
          << std::endl;

// output:
// ltr    hex      dec
// A  ==  0x41  ==  65

【讨论】:

以上是关于获取字符串中的每个字符并将其转换为 Hex c++?的主要内容,如果未能解决你的问题,请参考以下文章

Perl - 将十六进制转换为二进制并将其用作字符串

如何将枚举的十六进制值打印到C++中的字符串

C ++将字符串转换为无符号字符并将其转换回以获取字符串

Mysql中Hex()和Unhex()函数详解

如何将字符串加载到 BYTE* 数组(C++)的元素中 [重复]

Excel中有没有办法获取一列并将其转换为连接字符串