在在做一些互操作的时候往往需要一些类型的相互转换,比如用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 (1)uint-->byte[]; (2)byte[]-->char[]; (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使用,有机会好好总结一下贴上来。