Я использую этот код для преобразования без знака 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»
Спасибо за вашу помощь!
Используйте 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]);
}
Других решений пока нет …