C#字串、位元組陣列和記憶體流間的相互轉換 ASCII碼錶
阿新 • • 發佈:2018-12-16
定義string變數為str,記憶體流變數為ms,位元陣列為bt
1.字串=>位元陣列
(1)byte[] bt=System.Text.Encoding.Default.GetBytes("字串"); (2)byte[] bt=Convert.FromBase64String("字串");
補充:
System.Text.Encoding.Unicode.GetBytes(str); System.Text.Encoding.UTF8.GetBytes(str); System.Text.Encoding.GetEncoding("gb2312").GetBytes(str); //指定編碼方式
string str = "中國?ss123?"; byte[] bytes = System.Text.Encoding.Default.GetBytes(str); //gb2312編碼 漢字佔2個位元組、英文字母佔1個位元組 bytes長度為12 string s = System.Text.Encoding.Default.GetString(new byte[] { bytes[0],bytes[1] });//解碼後為“中”
byte[] bytes = {97, 98, 99, 100, 101, 102}; string str = System.Text.Encoding.ASCII.GetString(bytes); //結果為:abcdefASCII碼錶
常用方法:
GetString 已過載。 在派生類中重寫時,將一個位元組序列解碼為一個字串。 GetChars 已過載。 在派生類中重寫時,將一個位元組序列解碼為一組字元。 GetBytes 已過載。 在派生類中重寫時,將一組字元編碼為一個位元組序列。 GetByteCount 已過載。 在派生類中重寫時,計算對一組字元進行編碼所產生的位元組數。 GetCharCount 已過載。 在派生類中被重寫時,計算對位元組序列進行解碼所產生的字元數。 GetDecoder 在派生類中重寫時,獲取一個解碼器,該解碼器將已編碼的位元組序列轉換為字元序列。 GetEncoder 在派生類中重寫時,獲取一個解碼器,該解碼器將Unicode字元序列轉換為已編碼的位元組序列
2.位元陣列=>字串
(1)string str=System.Text.Encoding.Default.GetString(bt); (2)string str=Convert.ToBase64String(bt);
3.字串=>流
(1)MemoryStream ms=new MemoryStream(System.Text.Encoding.Default.GetBytes("字串")); (2)MemoryStream ms=new MemoryStream(Convert.FromBase64String("字串"));
4.流=>字串
(1)string str=Convert.ToBase64String(ms.ToArray()); (2)string str=System.Text.Encoding.Default.GetString(ms.ToArray());
5.位元陣列=>流
(1)MemoryStream ms=new MemoryStream(bt); (2)MemoryStream ms=new MemoryStream();ms.Read(bt,0,bt.Lenght);
6.流=>位元陣列
(1)byte[] bt=ms.ToArray(); (2)MemoryStream ms=new MemoryStream();ms.Write(bt,0,ms.Length);