1

このコードを使用して、unsigned 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"

助けてくれてありがとう!

4

1 に答える 1

6

IO マニピュレータstd::hexを使用します (これは、質問の一部のような必要性に基づいて私が考えるものです) の文字の 16 進数表現: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]);
}
于 2012-11-15T14:19:28.790 に答える