首先要明白它們本身是由什么組成的:
流:二進制
字節(jié):無符號整數(shù)
字符:Unicode編碼字符
字符串:多個Unicode編碼字符
那么在.net下它們之間如何轉(zhuǎn)化呢?
一般是遵守以下規(guī)則:
流->字節(jié)數(shù)組->字符數(shù)組->字符串
下面就來具體談談轉(zhuǎn)化的語法
流->字節(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);
說明:主要就是用到了Convert類和System.Text命名空間下的類,Encoding是靜態(tài)類,ASCIIEncoding是實體類,方法都是一樣的!
參考文章:
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.joycode.com/aspdian/archive/2004/02/29/14166.aspx
聯(lián)系客服