首先要明白它們本身是由什么組成的: 流:二進(jìn)制 字節(jié):無(wú)符號(hào)整數(shù) 字符:Unicode編碼字符 字符串:多個(gè)Unicode編碼字符
那么在.net下它們之間如何轉(zhuǎn)化呢? 一般是遵守以下規(guī)則: 流->字節(jié)數(shù)組->字符數(shù)組->字符串
下面就來(lái)具體談?wù)勣D(zhuǎn)化的語(yǔ)法 流->字節(jié)數(shù)組 MemoryStream ms = new MemoryStream(); byte[] buffer = new byte[ms.Length]; ms.Read(buffer, 0, (int)ms.Length);
字節(jié)數(shù)組->流 byte[] buffer = new byte[10]; MemoryStream ms = new MemoryStream(buffer);
字節(jié)數(shù)組->字符數(shù)組 1. byte[] buffer = new byte[10]; char[] ch = new ASCIIEncoding().GetChars(buffer); //或者:char[] ch = Encoding.UTF8.GetChars(buffer) 2. byte[] buffer = new byte[10]; char[] ch = new char[10]; for(int i=0; i<buffer.Length; i++) { ch[i] = Convert.ToChar(buffer[i]); }
字符數(shù)組->字節(jié)數(shù)組 1. char[] ch = new char[10]; byte[] buffer = new ASCIIEncoding().GetBytes(ch); //或者:byte[] buffer = Encoding.UTF8.GetBytes(ch) 2. char[] ch = new char[10]; byte[] buffer = new byte[10]; for(int i=0; i<ch.Length; i++) { buffer[i] = Convert.ToByte(ch[i]); }
字符數(shù)組->字符串 char[] ch = new char[10]; string str = new string(ch);
字符串->字符數(shù)組 string str = "abcde"; char[] ch=str .ToCharArray();
字節(jié)數(shù)組->字符串 byte[] buffer = new byte[10]; string str = System.Text.Encoding.UTF8.GetString(buffer); //或者:string str = new ASCIIEncoding().GetString(buffer);
字符串->字節(jié)數(shù)組 string str = "abcde"; byte[] buffer=System.Text.Encoding.UTF8.GetBytes(str); //或者:byte[] buffer= new ASCIIEncoding().GetBytes(str);
說(shuō)明:主要就是用到了Convert類和System.Text命名空間下的類,Encoding是靜態(tài)類,ASCIIEncoding是實(shí)體類,方法都是一樣的!
參考文章: c#中 uint--byte[]--char[]--string相互轉(zhuǎn)換匯總 http://www.cnblogs.com/huomm/archive/2008/08/29/1279417.html 字符串如何與流相互轉(zhuǎn)換? http://topic.csdn.net/t/20041224/17/3674276.html char[] 同 byte[] 有什么區(qū)別? http://topic.csdn.net/t/20051102/14/4366558.html C++中 unsigned char != byte http://blog.csdn.net/lyskyly/archive/2008/10/02/3009582.aspx http://blog./aspdian/archive/2004/02/29/14166.aspx |
|
來(lái)自: woshishenxian... > 《c#》