如何将UCHAR转换为二进制

时间:2011-06-23 12:15:44

标签: c++ mfc cstring

我想知道如何在C ++ / MFC中将UCHAR数组转换为二进制字符串。

我尝试了一些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 个答案:

答案 0 :(得分:3)

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之间存在转换器,那么您可能会尝试使用这些转换器吗?

答案 1 :(得分:0)

您可以尝试这样的事情(但请注意,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,那么您只需使用+运算符即可附加以null结尾的C字符串。