Как конвертировать UCHAR в бинарный - PullRequest
0 голосов
/ 23 июня 2011

Я хочу знать, как преобразовать массив UCHAR в двоичную строку в C ++ / MFC.

Я попробовал некоторые возможности с Cstring, но они не работали. Пожалуйста, дайте мне знать, почему.

Вот код, который я пробовал:

UCHAR ucdata[256];
ucdata[0] = 40;
char data[100];
StrCpy(data,(char *)ucData);
CString dataStr(data);


// original value


// convert to int
int nValue = atoi( dataStr );

        // convert to binary
        CString strBinary;
        itoa( nValue, strBinary.GetBuffer( 50 ), 2 );
        strBinary.ReleaseBuffer();

Ответы [ 2 ]

3 голосов
/ 23 июня 2011

C ++ ... MFC CString, конечно, не так ли ...

В стандартном C ++ вы можете сделать:

UCHAR ucdata[256];
ostringstream oss(ostringstream::out);
ostream_iterator<UCHAR> out(oss);

oss << setbase(2) << setw(8) << setfill('0');
copy(ucdata, ucdata + sizeof(ucdata), out);

cout << oss.str() << endl;

Я не уверен, как это сделатьпреобразовать это в MFC, хотя, если существуют классы между std::string классами и MFC CString, тогда вы можете попробовать использовать их?

0 голосов
/ 23 июня 2011

Вы можете попробовать что-то вроде этого (но учтите, что itoa не является строго переносимым):

UCHAR ucdata[256]; // filled somehow

CString result;    // starts out empty
char buf[9];       // for each number

for (size_t i = 0; i < 256; ++i)
  result += itoa(ucdata[i], buf, 2);

Я не знаю CString, но если это похоже на std::string, тогдаВы можете добавлять C-строки с нулевым символом в конце просто с помощью оператора +.

...