上篇blog講了一下unicode等編碼的問題﹐不過並沒有涉及程序﹐所以這次就用.net來證實一下上次的這些東東。
在證明那些東東之前﹐首先把.net中關於處理encoding,二進制,16進制,byte等相關類別和方法羅列一下。
1.byte與string(那些255以內的整數)的相互轉換(各種進制之間的相互轉換)
使用System.Convert類別
string to byte
Convert.ToByte(string,base)
base:2表示二進制,8表示八進制,10表示十進制,16表示十六進制(你要輸入33,呵呵﹐異常)
這樣可以把字符串的(0--255)轉成一個byte
Convert.ToByte("01000001",2)轉成 65
Convert.ToByte("255",10)轉成255
Convert.ToByte("42",16)轉成66
同理﹐byte to string也是Convert類
Convert.ToString(byte,base)
同樣可以轉成相應的進制表示的字符串
通過這兩個方法﹐我們要進行2,8,10,16進制的相互轉換就容易了
2.char,int,long,boolean等與byte[]之間的相互轉換(這些數據在內存中的存儲狀況)
使用System.BitConverter類別
我們都知道char,int,long等基本類型是以字節形式存在內存中的﹐所以要查看其內存存儲方式則直接使用BitConverter.GetBytes()就可以了
然後再使用BitConverter.ToString(byte[])就可以以string方式查看了(如:f9-03表示2個字節)
string是由char組成的﹐只要foreach(char in string)就可以看到string的存儲方式了(實驗表明﹐string在內存中是以unicode編碼存在的,下有示例)