如何将 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++ 中的转换

如何使用霓虹内在函数准确地将 uchar 转换为 float32 ,反之亦然

在C语言中如何将10进制转换成16进制?

在LINUX 系统下如何将二进制转换成ASCII码?

如何将二进制资源转换为短数组?