2011-10-10 12 views
7

मेरी प्रोजेक्ट में, मैं एक बाइट [] से सी # से सी ++ सीएलआर फ़ंक्शन पास करता हूं।सी ++ सीएलआर में सरणी <System :: Byte> char char * को कैसे परिवर्तित करें?

सी ++ CLR कोड:

void TestByteArray(array<System::Byte>^ byteArray) 
{ 
    ... 
} 

सी # कोड:

byte[] bytes = new byte[128]; 
... 
TestByteArray(bytes); 

TestByteArray() फ़ंक्शन में, मैं * चार है, ताकि मैं इसे देशी सी में इस्तेमाल कर सकते हैं bytearray परिवर्तित जरूरत ++ कोड । मैं ऐसा रूपांतरण कैसे कर सकता हूं?

उत्तर

14
void TestByteArray(array<System::Byte>^ byteArray) 
{ 
    pin_ptr<System::Byte> p = &byteArray[0]; 
    unsigned char* pby = p; 
    char* pch = reinterpret_cast<char*>(pby); 

    // use it... 
} 
+0

यह काम करता है, धन्यवाद के लिए देख रहे हैं! – Spark

0

आप Encoding.GetChars() विधि

+1

नहीं, यह 'wchar_t' (सी ++' सिस्टम :: चार' के बराबर होगा) के लिए होगा। –

संबंधित मुद्दे