如何将 UCHAR 转换为二进制
Posted
技术标签:
【中文标题】如何将 UCHAR 转换为二进制【英文标题】:How to convert UCHAR to Binary 【发布时间】:2011-06-23 12:15:44 【问题描述】:我想知道如何在 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();
【问题讨论】:
你为什么不更详细地展示你正在尝试做的事情(为什么),并展示你已经尝试过的东西? 向我们展示您的代码,并告诉我们您的期望。 这很可能是一个副本:***.com/questions/708114/… 嗨,我已经用我的代码更新了任务,请帮忙 您想要 UCHAR 数组的文本二进制打印输出吗?在这种情况下,您能否被说服接受十六进制打印输出?它的大小只有 25%。 【参考方案1】: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
之间存在转换器,那么您可以尝试使用那些?
【讨论】:
【参考方案2】:您可以尝试这样的事情(但请注意,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 字符串。
【讨论】:
以上是关于如何将 UCHAR 转换为二进制的主要内容,如果未能解决你的问题,请参考以下文章
如何将 UCHAR 虚拟键代码转换为 std::string [重复]
UCHAR * 到 CString 的转换和 CString 到 UCHAR * 到 vc++ 中的转换