2017-01-04 2 views
-1

내가 uint8_t 배열로 다시 문자열로 문자열을 변환하기 위해 노력하고있어,하지만 난 같은 결과를받지 못한 : 귀하의 캐스트가 일으키는C 다시

#include <iostream> 
#include <string> 
#include <sstream> 
#include <vector> 

using namespace std; 

string ByteArrayToString(const uint8_t *arr, int size) { 
    std::ostringstream convert; 

    for (int a = 0; a < size; a++) { 
     convert << (int)arr[a]; 
    } 

    return convert.str(); 
} 


int main(int argc, char **argv) { 
    string str = "10 1d8d532d463c9f8c205d0df7787669a85f93e260 ima-ng sha1:0000000000000000000000000000000000000000 boot_aggregate"; 

    vector<uint8_t> myVector(str.begin(), str.end()); 
    uint8_t *tmp = &myVector[0]; 

    cout << str << endl; 
    cout << ByteArrayToString(tmp, (str.length()/2)) << endl; 

    return 0; 
} 
+1

은 왜 당신은'2 .length' 분할하여입니까? – melpomene

답변

3

이, 그것을 제거 : 그에서 제외

for (int a = 0; a < size; a++) { 
    convert << arr[a]; 
} 

을, 당신은 단지 (length()/2), 문자열의 절반을 변환된다.

live example

+0

감사합니다! – wasp256