我想知道如何在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();
答案 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字符串。