2011-04-19 4 views
0

wxWidgets를 C++과 함께 사용하고 있습니다. 사용자가 공백으로 구분 된 16 진수 형식의 바이트 집합을 입력하는 wxTextCtrl이 있습니다. 나는 그들을 부호없는 char 배열로 가져오고 싶다. 결과 배열 [171, 211, 79, 10, 161, 11]을 얻기 위해 "AB D3 4F A A1 0B"와 같은 문자열을 어떻게 변환 할 수 있습니까?wxWidgets wxString

답변

2

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); 
} 
0

또한 토큰으로 문자열을 분할 boost::tokenizer을 사용할 수 있으며 this는 16 진수 값에 문자열 값을 변환 할 수 있습니다.

1

대신 정수의 진수를 변환하는 sscanf를를 사용하는 당신은 또한 자료의 ToULong operation of a wxString을 사용할 수 있습니다 (16)

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); 
}