How to: Convert char * String to System::Byte Array


The new home for Visual Studio documentation is Visual Studio 2017 Documentation on

The latest version of this topic can be found at How to: Convert char * String to System::Byte Array.

The most efficient way to convert a char * string to a Byte array is to use Marshal class.

// convert_native_string_to_Byte_array.cpp  
// compile with: /clr  
#include <string.h>  
using namespace System;  
using namespace System::Runtime::InteropServices;  
int main() {  
   char buf[] = "Native String";  
   int len = strlen(buf);  
   array< Byte >^ byteArray = gcnew array< Byte >(len + 2);  
   // convert native pointer to System::IntPtr with C-Style cast  
   Marshal::Copy((IntPtr)buf,byteArray, 0, len);  
   for ( int i = byteArray->GetLowerBound(0); i <= byteArray->GetUpperBound(0); i++ ) {  
      char dc =  *(Byte^)   byteArray->GetValue(i);  

Native String  

Using C++ Interop (Implicit PInvoke)