這篇文章給大家分享的是有關(guān)C# 中十進制與二進制、十六進制、八進制轉(zhuǎn)換的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
站在用戶的角度思考問題,與客戶深入溝通,找到達日網(wǎng)站設(shè)計與達日網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、空間域名、雅安服務器托管、企業(yè)郵箱。業(yè)務覆蓋達日地區(qū)。
1.十進制 轉(zhuǎn) 二進制
將十進制數(shù)不斷地除2,將所有余數(shù)倒敘填寫,即可得到所需二進制數(shù)據(jù)。
public static string DecimalToBinary(int vDecimal) {/* 將十進制的數(shù) vDecimal 不斷地除 2,取余數(shù) * 然后將余數(shù) 倒序 填寫 */List<int> vYuShu = new List<int>(); // 除 2 過程中產(chǎn)生的余數(shù)集int vTempValue= vDecimal; // 除 2 過程中產(chǎn)生的商數(shù)for (; ; ) {int tempYS = vTempValue % 2; vYuShu.Add(tempYS); // 記住余數(shù)vTempValue = vTempValue / 2;if (vTempValue == 0) // 商數(shù)等于0時,結(jié)束運算break; }// 倒序輸出string strBinary = "";for (int i = vYuShu.Count - 1; i >= 0; i--) { strBinary += vYuShu[i]; } Console.WriteLine("Input decimal value:{0}, output binary value:{1}.", vDecimal, strBinary);return strBinary; }
2. 二進制 轉(zhuǎn) 十進制
將二進制各位上的值(0或1)乘2的(n-1)次方,將每位結(jié)果相加。其中,n表示二進制中從右向左的位數(shù)(從1開始計);
public static int BinaryToDecimal(string vBinary) {// 首先判斷是否滿足輸入要求int[] vInput = new int[vBinary.Length];for (int i = 0; i < vBinary.Length; i++) {var tempNum = vBinary[i].ToString();if (tempNum == "0") { vInput[i] = 0; }else if (tempNum == "1") { vInput[i] = 1; }else{throw new Exception("輸入?yún)?shù)不正確,二進制數(shù)應僅由:0和1組成"); } }/* * 依次乘2的(n-1)次方,再求和 */int vDecimal = 0;for (int i = 1; i <= vInput.Length; i++) { vDecimal += (int)(Math.Pow(2, i - 1) * vInput[vInput.Length-i]); } Console.WriteLine("Input binary value:{0}, output decimal value:{1}.", vBinary, vDecimal);return vDecimal; }
3. 自帶的轉(zhuǎn)換方式
C#.Net自帶的進制轉(zhuǎn)換方式:
int vDecimal = 99;// 【10】 → 【2】string vBinary = Convert.ToString(vDecimal, 2); Console.WriteLine("十進制數(shù):{0},轉(zhuǎn)換成二進制:{1}", vDecimal, vBinary);// 【2】 → 【10】int tempDecimal = Convert.ToInt32(vBinary, 2); Console.WriteLine("二進制數(shù):{0},轉(zhuǎn)換成十進制:{1}", vBinary, tempDecimal);
4. 十進制 <=> 十六進制
int vDecimal = 127;// 【10】 → 【16】string vStrHex = "0x" + Convert.ToString(vDecimal, 16); Console.WriteLine("十進制數(shù):{0},轉(zhuǎn)換成十六進制:{1}", vDecimal, vStrHex);// 【16】 → 【10】int tempDecimal = Convert.ToInt32(vStrHex, 16); Console.WriteLine("十六進制數(shù):{0},轉(zhuǎn)換成十進制:{1}", vStrHex, tempDecimal);
或者可以:
5. 十進制 <=> 八進制
6. 其它轉(zhuǎn)換
7. 有符號的數(shù) 二進制轉(zhuǎn)換
對于有正負號的數(shù)據(jù),在轉(zhuǎn)換時與上訴略有不同。
1個字節(jié)(8個bits)它不管怎么樣還是只能表示256個數(shù),因為有符號所以我們就把它表示成范圍:-128 → 127。
用最高位表示符號位,0表示正數(shù),1表示負數(shù)。
10000000在計算機中表示最小的負整數(shù)。從10000001到 11111111依次表示-127到-1。
負整數(shù)在計算機中是以補碼形式儲存的。
public static int BinaryToDecimalWithSign(string vBinary) {// 首先判斷是否滿足輸入要求int[] vInput = new int[vBinary.Length];for (int i = 0; i < vBinary.Length; i++) {var tempNum = vBinary[i].ToString();if (tempNum == "0") { vInput[i] = 0; }else if (tempNum == "1") { vInput[i] = 1; }else{throw new Exception("輸入?yún)?shù)不正確,二進制數(shù)應僅由:0和1組成"); } }// -------- 不足8bits,補足 --------(非必需)if (vInput.Length % 8 != 0) // 補足8b、16b、、、 {int nLen = (vInput.Length / 8 + 1) * 8;int[] nInput = new int[nLen];for (int i = 0; i < nLen - vInput.Length; i++) { nInput[i] = vInput[0]; } vInput.CopyTo(nInput, nLen - vInput.Length); vInput = nInput; }// ---------------------------------// 第1步:首位為1,則為負值int vFH = vInput[0];if (vFH == 1) {// ---------- 第2步:減去一 ----------for (int i = 1; i <= vInput.Length; i++) {if (vInput[vInput.Length - i] == 1) { vInput[vInput.Length - i] = 0;break; }else{ vInput[vInput.Length - i] = 1; } }// ---------- 第3步:取反 ----------for (int i = 0; i < vInput.Length; i++) { vInput[i] = 1 - vInput[i]; } }// ---------- 第4步:轉(zhuǎn)成10進制數(shù) ----------int vDecimal = 0;for (int i = 1; i <= vInput.Length; i++) { vDecimal += (int)(Math.Pow(2, i - 1) * vInput[vInput.Length - i]); }if (vFH == 1) // 為負數(shù) { vDecimal = 0 - vDecimal; } Console.WriteLine("Input binary value:{0}, output decimal value:{1}.", vBinary, vDecimal);return vDecimal; }
感謝各位的閱讀!關(guān)于“C# 中十進制與二進制、十六進制、八進制轉(zhuǎn)換的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
分享文章:C#中十進制與二進制、十六進制、八進制轉(zhuǎn)換的示例分析
本文來源:http://aaarwkj.com/article8/gopoop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、品牌網(wǎng)站設(shè)計、品牌網(wǎng)站建設(shè)、微信公眾號、做網(wǎng)站、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)