我在c++中使用wxWidgets。我有一个wxTextCtrl,用户在其中输入一组以空格分隔的十六进制格式的字节。我想把它们放在无符号字符数组中。如何从"AB D3 4F A A1 0B“这样的字符串转换得到结果数组: 171,211,79,10,161,11
发布于 2011-04-19 19:14:30
我将使用wxStringTokenizer将字符串分解为单独的十六进制,然后使用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 );
}发布于 2016-05-23 15:30:16
除了使用sscanf将十六进制转换为整数之外,您还可以使用以16为基数的ToULong operation of a wxString。
wxString token = tkz.GetNextToken();
unsigned long ulVal;
if (token.ToULong(&ulVal, 16) == true)
{
vec.push_back( (unsigned char)v );
}
else
{
// A default value for example ...
vec.push_back( (unsigned char)0 );
}发布于 2011-11-21 20:41:37
您还可以使用boost::tokenizer将字符串拆分为标记,使用this将字符串值转换为十六进制值。
https://stackoverflow.com/questions/5715354
复制相似问题