程序范例
本程序范例將建立四種不同的字節(jié)數(shù)據(jù),并使用三種不同的編碼方式將原本的字節(jié)數(shù)據(jù)轉(zhuǎn)換為字符串,觀察編碼函式處理后所產(chǎn)生之結(jié)果,程序代碼如下所示:
static void Main(string[] args)
{
byte[] ibyte1, ibyte2, ibyte4;
byte[] ibyte3 = new byte[1024];
ibyte1 = System.Text.Encoding.ASCII.GetBytes("0123456789");
ibyte2 = System.Text.Encoding.ASCII.GetBytes("章立民");
RandomNumberGenerator.Create().GetBytes(ibyte3);
ibyte4 = new byte[]{0,1,2,3,4};
Show(ibyte1);
Show(ibyte2);
Show(ibyte3);
Show(ibyte4);
Console.ReadLine();
}
private static void Show(byte[] Ibyte)
{
Console.WriteLine("/**********************************************/n");
Console.WriteLine("Ibyte[0]:" + Ibyte[0].ToString() + "n");
string ascii2str = Encoding.ASCII.GetString(Ibyte);
Console.WriteLine("ascii2str:" + ascii2str + "t");
Console.WriteLine("ascii2str.Length:" + ascii2str.Length + "n");
string unicode2str = Encoding.Unicode.GetString(Ibyte);
Console.WriteLine("unicode2str:" + unicode2str + "t");
Console.WriteLine("unicode2str.Length:" + unicode2str.Length + "n");
string utf82str = Encoding.UTF8.GetString(Ibyte);
Console.WriteLine("utf82str:" + utf82str + "t");
Console.WriteLine("utf82str.Length:" + utf82str.Length + "n");
byte[] ascii2byte = Encoding.ASCII.GetBytes(ascii2str);
byte[] unicode2byte = Encoding.Unicode.GetBytes(unicode2str);
byte[] utf82byte = Encoding.UTF8.GetBytes(utf82str);
Console.WriteLine(ascii2byte.Length + " " +
unicode2byte.Length + " " + utf82byte.Length + "n");
Console.WriteLine("/**********************************************/n");
}
執(zhí)行完程序之后發(fā)現(xiàn),ibyte1 變量以 ASCII 或是 UTF8 編碼后,產(chǎn)生的字符串內(nèi)容與長(zhǎng)度皆與原來變量相同。ibyte2 變量以 ASCII 或是 UTF8 編碼后,雖然產(chǎn)生的字符串?dāng)?shù)據(jù)長(zhǎng)度與原來變量相同,但是數(shù)據(jù)內(nèi)容與原來的變量不同。ibyte3 變量以ASCII編碼后,產(chǎn)生的字符串?dāng)?shù)據(jù)長(zhǎng)度與原來變量相同。 ibyte4 變量以 ASCII 或是 UTF8 編碼后,產(chǎn)生的字符串?dāng)?shù)據(jù)長(zhǎng)度與原來變量相同,但是數(shù)據(jù)內(nèi)容與原來的變量不同。
從以上的結(jié)果可以得知,將字節(jié)轉(zhuǎn)換為字符串之前,必須先針對(duì)數(shù)據(jù)內(nèi)容,選擇適合的轉(zhuǎn)換函式,才能夠得到符合需求的結(jié)果。
聯(lián)系客服