C# 進(jìn)制轉(zhuǎn)換的實(shí)現(xiàn)(二進(jìn)制、十六進(jìn)制、十進(jìn)制互轉(zhuǎn))
由于二進(jìn)制數(shù)在C#中無法直接表示,所以所有二進(jìn)制數(shù)都用一個(gè)字符串來表示
例如: 二進(jìn)制: 1010 表示為 字符串:"1010"
int d = 10;
//十進(jìn)制轉(zhuǎn)二進(jìn)制字符串
Console.WriteLine(Convert.ToString(d,2));
//輸出: 1010
//十進(jìn)制轉(zhuǎn)十六進(jìn)制字符串
Console.WriteLine(Convert.ToString(d,16));
//輸出: a
//二進(jìn)制字符串轉(zhuǎn)十進(jìn)制數(shù)
string bin = "1010";
Console.WriteLine(Convert.ToInt32(bin,2));
//輸出: 10
//二進(jìn)制字符串轉(zhuǎn)十六進(jìn)制數(shù)
string bin = "1010";
Console.WriteLine(string.Format("{0:x}",Convert.ToInt32(bin,2));
//輸出: a
//十六進(jìn)制轉(zhuǎn)二進(jìn)制字符串
Console.WriteLine(Convert.ToString(0xa,2));
//輸出: 1010
//十六進(jìn)制轉(zhuǎn)十進(jìn)制數(shù)
Console.WriteLine(Convert.ToString(0xa,10));
//輸出: 10
C#實(shí)現(xiàn)轉(zhuǎn)換十六進(jìn)制
C#語言有很多值得學(xué)習(xí)的地方,這里我們主要介紹C#實(shí)現(xiàn)轉(zhuǎn)換十六進(jìn)制,包括介紹用來表示十六進(jìn)制的枚舉值是 HexNumber等方面。
任何數(shù)據(jù)在計(jì)算機(jī)內(nèi)部都是以二進(jìn)制保存的,所以進(jìn)制與數(shù)據(jù)的存儲無關(guān),只與輸入輸出有關(guān)。所以,對于進(jìn)制轉(zhuǎn)換,我們只關(guān)心字符串中的結(jié)果。
在上面的第 4 條中提到了 ToString() 方法可以將數(shù)值轉(zhuǎn)換成字符串,不過在字符串中,結(jié)果是以十進(jìn)制顯示的?,F(xiàn)在我們帶給它加一些參數(shù),就可以讓C#實(shí)現(xiàn)轉(zhuǎn)換成十六進(jìn)制——使用 ToString(string) 方法。
這里需要一個(gè) string 類型的參數(shù),這就是格式說明符。十六進(jìn)制的格式說明符是 "x" 或者 "X",使用這兩種格式說明符的區(qū)別主要在于 A-F 六個(gè)數(shù)字:"x" 代表 a-f 使用小寫字母表示,而 "X" 而表示 A-F 使用大字字母表示。如下例:
private void TestHex() {
int a = 188;
thistextBoxText = "";
thistextBoxAppendText("a(10) = " + aToString() + "\n");
thistextBoxAppendText("a(16) = " + aToString("x") + "\n");
thistextBoxAppendText("a(16) = " + aToString("X") + "\n");
}
運(yùn)行結(jié)果如下:
a(10) = 188
a(16) = bc
a(16) = BC
這時(shí)候,我們可能有另一種需求,即為了顯示結(jié)果的整齊,我們需要控制十六進(jìn)制表示的長度,如果長度不夠,用前導(dǎo)的 0 填補(bǔ)。解決這個(gè)問題,我們只需要在格式說明符“x”或者“X”后寫上表示長度的數(shù)字就行了。比如,要限制在 4 個(gè)字符的長度,可以寫成“X4”。在上例中追加一句:
this.textBox1.AppendText("a(16) = " + a.ToString("X4") + "\n");
其結(jié)果將輸出 a(16) = 00BC。
現(xiàn)在,我們還要說一說如何將一個(gè)表示十六進(jìn)制數(shù)的字符串轉(zhuǎn)換成整型。這一轉(zhuǎn)換,同樣需要借助于 Parse() 方法。這里,我需要 Parse(string, System.Globalization.NumberStyles) 方法。第一個(gè)參數(shù)是表示十六進(jìn)制數(shù)的字符串,如“AB”、“20”(表示十進(jìn)制的 32) 等。第二個(gè)參數(shù) System.Globalization.NumberStyles 是一個(gè)枚舉類型,用來表示十六進(jìn)制的枚舉值是 HexNumber。因此,如果我們要將“AB”轉(zhuǎn)換成整型,就應(yīng)該這樣寫:int b = int.Parse("AB", System.Globalization.NumberStyles.HexNumber),最后得到的 b 的值是 171。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
教你使用.NET快速比較兩個(gè)byte數(shù)組是否相等
在.NET中如何快速的比較兩個(gè)byte數(shù)組是否完全相等,聽起來是一個(gè)比較兩個(gè)byte數(shù)組是完全相等是一個(gè)簡單的問題,但是深入研究以后,覺得還是有很多方案的,這里和大家一起分享下2022-04-04
.net生成縮略圖及水印圖片時(shí)出現(xiàn)GDI+中發(fā)生一般性錯(cuò)誤解決方法
這篇文章主要介紹了.net生成縮略圖及水印圖片時(shí)出現(xiàn)GDI+中發(fā)生一般性錯(cuò)誤解決方法 ,需要的朋友可以參考下2014-11-11
ASP.NET Core 集成 React SPA應(yīng)用的步驟
這篇文章主要介紹了ASP.NET Core 集成 React SPA應(yīng)用的步驟,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下2021-04-04
.net?core?api接口JWT方式認(rèn)證Token
本文詳細(xì)講解了.net?core?api接口JWT方式認(rèn)證Token,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
IIS上部署你的ASP.NET?Core?Web?Api項(xiàng)目及Swagger(圖文)
本篇經(jīng)驗(yàn)將和大家介紹如何在IIS上部署ASP.NET?Core項(xiàng)目,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,希望為初學(xué).NET?CORE的童靴入門有所幫助2023-09-09

