如何转换以下字符串:
std::string str = "x89x30x50";
此以下具有转义序列的无符号char数组/字节数组:
unsigned char char_arr[1024] = "\x89\x30\x50";
答案 0 :(得分:1)
如果我正确理解了您的问题,则希望将十六进制值(以'x'开头)的字符串拆分为字节值。
您可以通过标记字符串(使用定界符“ x”)并将每个标记转换为字节值来实现:
类似这样的东西:
#include <string>
#include <sstream>
int main()
{
std::string str = "x89x30x50";
unsigned char char_arr[1024] = "";
std::istringstream iss(str);
std::string token;
int i = 0;
while (std::getline(iss, token, 'x'))
{
if (token.empty()) continue;
char_arr[i++] = static_cast<unsigned char>(std::stoi(token, nullptr, 16));
}
//char_arr = {0x89,0x30,0x50,0,0,...}
}