2011-06-23 13 views
0

UCHAR配列を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

あなたがしようとしていることをより詳細に(なぜ)表示し、あなたが試したことを示してみませんか? – crashmstr

+1

あなたのコードを見せて、あなたの期待を教えてください。 –

+0

これはうまくいくかもしれません:http://stackoverflow.com/questions/708114/convert-byte-array-into-bitset –

答えて

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のような場合は、単にヌル終端のC文字列を+演算子で追加することができます。

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の間にコンバーターが存在する場合は、それを使用してみてください。

+0

+1は 'setbase'の使用に+1します。 –

関連する問題