C# IntPtr 與 string互轉/char*與string互轉/char* 與 IntPtr互轉/string與byte[]互轉


IntPtr 與 string互轉

string str = "aa";

IntPtr init = Marshal.StringToHGlobalAnsi(str);

string ss= Marshal.PtrToStringAnsi(init);

//最后釋放掉

Marshal.FreeHGlobal(init);

char*與string互轉

string a = "11";

char* aChar = (char*)System.Runtime.InteropServices.Marshal.StringToHGlobalAnsi(a).ToPointer();

string result = Marshal.PtrToStringAnsi((IntPtr)aChar);

char* 與 IntPtr互轉

可以直接強制類型轉換

IntPtr init = (IntPtr)aChar;

char* aChar = (char*)init;

string轉成 Base64 形式的String

//byte[] 轉string
byte[] b = Encoding.Default.GetBytes("字符串");
//byte[]轉成 Base64 形式的String
string a = Convert.ToBase64String(b);

Base64 形式的String轉成string

//Base64形式的String轉成byte[]
byte[] c= Convert.FromBase64String(a_str);
//byte[]轉String
String d = System.Text.Encoding.Default.GetString(c);

IntPtr與byte[]互轉

IntPtr轉byte[]

int size = 30;
byte [] managedArray = new byte[size];
Marshal.Copy(pBuffer, managedArray, 0, size);

//byte[]轉IntPtr
byte [] managedArray = {1,2,3,4,5 };
int size = Marshal.SizeOf(managedArray [0])* managedArray.Length;
IntPtr pBuffer= Marshal.AllocHGlobal(size);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM