在在做一些互操作的時候往往需要一些類型的互相轉換,比如用c#通路win32api的時候往往需要向api中傳入DWORD參數 即:uint參數這些數值所表示的資料在實際的應用中可能需要以字元的形式顯示,但是c#對api的關系無法跟c++相比,是以在c#中進行一些類型資料的轉換十分必要了,
下面将用到的一些簡單的轉換操作貼上來,友善記憶
//uint--->byte[]
byte[] bpara =System.BitConverter.GetBytes(uint upara);
//byte[]--->uint
uint upara= System.BitConverter.ToUint32(bpara);
//byte--->char
system.convert.tochar(bpara);
//char--->byte
system.convert.tobyte(cpara);
//byte[]--->char[]
(1)char[] cpara= System.Text.Encoding.Default.GetChars(bpara);(1)
(2)char[] cpara=new char[bpara.length];
for(int i=0;i <bpara.length;i ++){char[i]=system.convert.tochar(bpara[i]);}
(3)char[] cpara= new ASCIIEncoding().GetChars(bpara);
//char[]--->byte[]
(1)byte[] bpara= System.Text.Encoding.Default.GetBytes(cpara);
(2) byte[] bpara= new ASCIIEncoding().GetBytes(cpara);
char[]--->string
String spara=new String(cpara);
//string---char[]
char[] cpara=spara.ToCharArray()
//uint---->char[]
(1)uint-->byte[];
(2)byte[]-->char[];
//uint--->string
(3)char[]-->string;
//byte[]--->string
(1).byte[]-->char[];
(2).char[]-->string;
(3) new ASCIIEncoding().GetString(bprar);
//char[]--->uint
(1).char[]-->byte[];
(2).byte[]-->uint;
//string--->byte[]
bpara= System.Text.Encoding.Default.GetBytes(sPara)
//string--->uint
(1)string-->byte[];
(2)byte[]-->uint;
注意在跟api用uint進行字元互動的時候,一定要注意字元順序,涉及到api中高低位資料的問題,即擷取到api中DOWRD的資料在c#表示中往往是反序,是以在c#中擷取或者傳遞字元串時一定要注意反序處理後才能轉換成uint給api使用,有機會好好總結一下貼上來。