2017-01-04 6 views
-1

Я пытаюсь преобразовать строку в uint8_t массив и обратно в строку, но я не получаю тот же результат:C++ преобразовать строку в uint8_t массива и обратно

#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

Почему вы Разделив '.length' на 2? – melpomene

ответ

3

гипс вызывает это, удалите его:

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

Помимо этого, вы только половину преобразования строки (length()/2).

live example

+0

Спасибо, теперь это сработало! – wasp256

Смежные вопросы