Преобразовать массив без знака char * в std :: string

Я использую этот код для преобразования без знака char * (указывает на массив из 256 значений) в std :: string:

int ClassA::Func(unsigned char *dataToSend, int sendLength)
{
std::stringstream convertStream;
std::string dataToSendStr = "";

for(int i=0; i<=sendLength; i++) convertStream << dataToSend[i];

while(!convertStream.eof()) convertStream >> dataToSendStr;
...
}

но тогда у меня есть dataToSendStr в этом формате:

dataToSendStr ""[0]           0x00
[1]           0x00
[2]           0x04
[3]           0xC0

если я теперь использую это значение, я получаю только «», а не важные значения [0-3]!

-> нужно что-то вроде: dataToSendStr «000004C0»

Спасибо за вашу помощь!

1

Решение

Используйте IO манипулятор станд :: шестигранной если хочешь (вот что я считать на основе нужно что-то вроде часть вопроса) шестнадцатеричное представление символов в dataToSend:

std::ostringstream convertStream;
convertStream << std::hex << std::setfill('0');

for (int i = 0; i < sendLength; i++)
{
convertStream << std::setw(2) << static_cast<short>(dataToSend[i]);
}
6

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector