获取字符串中的每个字符并将其转换为 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<unsigned char *>(&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++?的主要内容,如果未能解决你的问题,请参考以下文章