首先要明白他們本身是由什麼組成的
流:二進位制。
位元組:無符號的整數。
字元:unicode 編碼字元。(unicode編碼)
在上述幾個物件的相互轉化中一般遵守:
流 ——> 位元組陣列 ——>字元陣列 ——>字串字元陣列或字串轉換成位元組陣列:
public static voidmain()
c#提供了unicode、asciie、utf系列的編碼方式。或者使用convert.tobyte,通過for迴圈乙個乙個字元轉化也可以進行。不過不推薦,貌似這樣把東西複雜化了。
如果是gb2312的編碼需要進行相應的轉換才能正確使用,轉換方式為:字串 –> 位元組陣列 –>(具有指定編碼)字串
byte字串 <==> 字元陣列:bs =
encoding
.getencoding(
"gb2312"
).getbytes(str);
bs =
encoding
.convert(
encoding
.getencoding(
"gb2312"
), encoding
.getencoding(
"utf-8"
), bs);
string
res =
encoding
.getencoding(
"utf-8"
).getstring(bs);
//字串轉換成字元陣列。其實c#內建的字串就是字元陣列。他們相互轉換沒有什麼難度。char
cs = str.tochararray();
//字元陣列轉化成字串。
string
newstr = cs.tostring();
位元組陣列 <==> 字串:
前文有詳細的介紹,如需參看:檢視。
因為從位元組陣列轉換到字串涉及到編碼問題,要根據實際程式設計需要進行轉換。
提供乙個靜態的方法用於轉換編碼型別:
///
///
將字串轉換成另一種編碼的字串。
///
///
源字串。
///
源字串的編碼型別。
///
目標字串的編碼型別。
///
public static string
convertstr(
string
str,
string
from,
string
to)
流和位元組陣列的轉換:
memorystreamms =
new
memorystream
(buffer);
通過 memeorystream 的建構函式實現了將位元組陣列轉換成流的方法。
同樣的在memorystream的例項中提供了toarray、read方法將資料讀到位元組陣列中來,同時微軟提供了streamreader和streamwriter類幫我們實現在流上讀寫字串的功能。
檔案流和網路流提供非同步的讀取方法用於從流中讀取資料,具體檢視的另乙個人的鏈結寫的全面。
c 中的流,位元組,字元,字串
首先要明白它們本身是由什麼組成的 流 二進位制 位元組 無符號整數 字元 unicode編碼字元 字串 多個unicode編碼字元 那麼在.net下它們之間如何轉化呢?一般是遵守以下規則 流 位元組陣列 字元陣列 字串 下面就來具體談談轉化的語法 流 位元組陣列 memorystream ms ne...
C 中的流 位元組 字元和字串
首先要明白它們本身是由什麼組成的 流 二進位制 位元組 無符號整數 字元 unicode編碼字元 字串 多個unicode編碼字元 那麼在.net下它們之間如何轉化呢?一般是遵守以下規則 流 位元組陣列 字元陣列 字串 下面就來具體談談轉化的語法 流 位元組陣列 memorystream ms ne...
C 中流,位元組,字元,字串
首先要明白它們本身是由什麼組成的 流 二進位制 位元組 無符號整數 字元 unicode編碼字元 字串 多個unicode編碼字元 那麼在.net下它們之間如何轉化呢?一般是遵守以下規則 流 位元組陣列 字元陣列 字串 下面就來具體談談轉化的語法 流 位元組陣列 memorystream ms ne...