我正在使用带有c ++的wxWidgets。我有一个wxTextCtrl,其中用户输入一组以空格分隔的十六进制格式的字节。我想让它们在unsigned char数组中。如何从像“AB D3 4F A A1 0B”这样的字符串转换得到结果数组:[171,211,79,10,161,11]?
答案 0 :(得分:2)
我会使用wxStringTokenizer将字符串分解为单个hexes,然后使用sscanf将它们转换为数值。
这样的事情:
std::vector<unsigned char> vec;
wxStringTokenizer tkz(thetextCtrl->GetValue(), wxT(" "));
while ( tkz.HasMoreTokens() )
{
wxString token = tkz.GetNextToken();
unsigned char v;
sscanf(token.c_str(),"%x",&v)
vec.push_back( v );
}
答案 1 :(得分:1)
除了使用sscanf转换十六进制整数,您还可以使用基数16中的ToULong operation of a wxString。
to_internal_value
答案 2 :(得分:0)
您还可以使用boost::tokenizer将字符串拆分为标记,并使用this将字符串值转换为十六进制值。