- C#實踐教程(第2版)
- 李乃文
- 1847字
- 2021-03-19 18:15:35
2.2 數據進制與格式
上一節對數據類型有了簡單介紹,但數據類型的內容不止如此。本節將詳細介紹常用數據類型的特點及用法。
2.2.1 十進制、二進制與十六進制
十進制是人們生活中常用并習慣使用的數據。十進制數據以10為基數,由從0到9這10個數字構成,滿十進一。
1. 常見的數據進制
計算機中的數據只有兩位,即0和1,是二進制數據。二進制數據由0和1這兩個數字構成,十進制中的數字3被轉化成二進制表示為11,滿二進一。因此,十進制中的4等同于二進制中的100。
同樣道理,十六進制由十六個數字構成,滿十六進一。由于數字只有0到9這10個,不足以表示十六進制所需的十六個,因此需要使用大寫字母A到F來表示。
表示十六進制的數字為:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。十六進制中的F相當于十進制中的15;十六進制10相當于十進制數字16。
對于十進制數據,從低位到高位分別表示個、十、百、千等,依次表示為100、101、102、103;對于二進制數據,從低位到高位依次為20、21、22、23和24等;十六進制數據從低位到高位依次為160、161、162、163等。
因此,對于二進制數據11001來說,轉換為十進制數據為:1×1+0×2+0×4+1×8+1×16=25。十六進制數據AAA轉化為十進制為:10×1+10×16+10×256=2730。
由十進制轉化為二進制或十六進制的方法較為復雜,具體方法如下。
2. 十進制整數轉換為二進制整數
采用“除2取余,逆序排列”法。用2整除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,如此進行,直到商為0時為止,然后把先得到的余數作為二進制數的低位有效位,后得到的余數作為二進制數的高位有效位,依次排列起來。
如對十進制126進行轉化,首先使用126/2=63,余0;接下來使用63/2=31,余1;31/2=15,余1;15/2=7,余1;7/2=3,余1;3/2=1,余1;1/2=0,余1。則結果為1111110,即將所有余數反過來排列,即可得到結果。
3. 十進制整數轉換為十六進制整數
采用“除16取余,逆序排列”法。與十進制轉化為二進制的方法相同,只是將除數換成了16。
如對十進制126進行轉化,首先使用126/16=7,余14;7/16=0,余7。14需要使用字母E表示,126轉化為十六進制為7E。
2.2.2 字符串類型格式化
字符串類型的輸出,除了可以使用轉義字符來規范格式以外,還可以根據指定格式進行輸出。字符串格式的規范性可使用格式標識符、使用Console.WriteLine()方法、使用string.Format()方法和使用“@”符號等。
1. 使用Console.WriteLine()方法及格式標識符
為了規范輸出數據,Console.WriteLine()方法可直接對字符串的格式進行規范,其中一種規范格式如下所示:
Console.WriteLine(“{0} {1}”,參數1,參數2…)
上述代碼中,{0}代表第一個參數,{1}代表第二個參數。Console.WriteLine()方法可包含多個參數,使用大括號和數字來表示。其內部數字從0開始,相同的編號只能代表相同的參數。如輸出字符串“我的小妹名叫秋秋,今年7歲”,將“秋秋”和“7歲”作為參數,可使用如下語句:
Console.WriteLine("我的小妹名叫{0},今年{1}","秋秋","7歲");
在C#中提供了格式標識符號,用來規范字符串的輸出格式。常見的格式標識符號如表2-4所示。
表2-4 格式標識符號及其含義

如分別使用逗號分隔符號和精度格式,輸出同一個數據56789,使用語句如下所示:
Console.WriteLine("{0:N1}", 56789); Console.WriteLine("{0:N2}", 56789); Console.WriteLine("{0:N3}", 56789); Console.WriteLine("{0:F1}", 56789); Console.WriteLine("{0:F2}", 56789);
運行上述語句,其效果如圖2-2所示。若Console.WriteLine()方法中有兩個參數,都需要雙精度表示,則可以使用“Console.WriteLine("{0:F2}{1:F2}", 56789,1234);”語句。
在C#中,有Console.Write()方法,其用法與Console.WriteLine()方法只有一點不同:Console.WriteLine()方法在輸出的同時,在輸出內容的末尾添加換行符,而Console.Write()方法只輸出指定的內容,不對文字進行換行。
如圖2-2中的輸出,使用Console.Write()方法來替換Console.WriteLine()方法,結果如圖2-3所示。

圖2-2 字符串格式標識的使用

圖2-3 Console.Write()方法顯示效果
2. string.Format()方法
在C#中,有不需要輸出而只指定字符串格式的方法:string.Format()方法。該方法根據指定的格式,返回一個格式字符串,其格式的使用與Console.WriteLine()方法一樣。如同樣是“我的小妹名叫秋秋,今年7歲”字樣,使用string.Format()方法語句如下:
string.Format ("我的小妹名叫{0},今年{1}","秋秋","7歲");
輸出該字符串,語句如下:
Console.WriteLine(string.Format ("我的小妹名叫{0},今年{1}","秋秋","7歲"));
該語句與下述語句的輸出結果一樣。
Console.WriteLine("我的小妹名叫{0},今年{1}","秋秋","7歲");
3. @的使用
在C#中,一些特殊符號被賦予了特殊的用法,但字符串中的特殊符號并不希望被用作特殊的用法,而是希望被作為普通字符輸出,此時可以使用“@”符號,將字符串原樣輸出。
如“\n”可以作為換行符,在字符串中間分隔字符串,分別使用不含@的輸出和含有@的輸出,查看運行效果,使用代碼如下所示:
Console.WriteLine("我的小妹名叫秋秋,\n今年7歲"); Console.WriteLine(@"我的小妹名叫秋秋,\n今年7歲");
運行上述代碼,其結果如圖2-4所示。第一句代碼沒有使用@符號,語句中的轉義字符\n被作為換行符使用;而第二句,在字符串的前面使用@符號,@后的字符串被原樣輸出,如圖2-4所示。

圖2-4 字符串的原樣輸出