У меня возникли проблемы с выяснением того, как преобразовать мой вектор uint8 в stringstream.
На входе я получаю вектор uint8, первые 9 байтов - это флаги, которые мне не нужны в моем строковом потоке, следующие 2 байта - это некоторые данные, которые мне нужны в виде строки, давайте назовем их "name1", следующие 2 байта - это другое имя, чтобы не называть его "имя2", затем идут 4 байта, которые представляют собой некоторое число uint32 (но записываются как 4 байта uint8), давайте назовем его просто "число". Теперь мне нужно передать эти данные в stringstream, но:
- name1 и number2 должны быть записаны как байты (byte 0x52 -> char[2]={"5","2"})
- число должно быть приведено к uint32
- все переменные должны быть разделены точкой с запятой в конечном потоке строк
поэтому, если я получаю такой вектор:
--- около 9 байт ---, 0x05, 0x00, 0x01,0x00,0x00,0x00,0x08,0x0E, --- некоторые другие данные---
мне нужно, чтобы stringstream был таким:
"0500;0100;2062;"
мне удалось выяснить, как привести номер к uint32:
uint8_t tab[4];
for(int i=4; i!=0; --i)
{
tab[4-i]=data[i+14];
}
uint32_t* var = (uint32_t*)tab;
есть ли лучший способ сделать это?
РЕДАКТИРОВАТЬ:
Как передать значения uint8 в строку в виде символов?
пример:
байтовый вывод: 0x05
строковый вывод: 05
могу ли я поместить строку в stringstream с помощью оператора «‹‹» или это не рекомендуется?