C#实现十进制数转换为二进制、八进制、十六进制数的算法

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;   

namespace ExDtoB
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }   

        //十进制转二制
        public string DtoB(int d)
        {
            string b = "";
            //判断该数如果小于2,则直接输出
            if (d < 2)
            {
                b = d.ToString();
            }
            else
            {
                int c;
                int s = 0;
                int n = d;
                while (n >= 2)
                {
                    s++;
                    n = n / 2;
                }
                int[] m = new int[s];
                int i = 0;
                do
                {
                    c = d / 2;
                    m[i++] = d % 2;
                    d = c;
                } while (c >= 2);
                b = d.ToString();
                for (int j = m.Length - 1; j >=0; j--)
                {
                    b += m[j].ToString ();
                }
            }
            return b;
        }   

        //十进制转八进制---www.bianceng.cn
        public string DtoO(int d)
        {
            string o = "";
            if (d < 8)
            {
                o = d.ToString();
            }
            else
            {
                int c;   

                int s=0;
                int n=d;
                int temp = d;
                while (n >= 8)
                {
                    s++;
                    n = n / 8;
                }
                int[] m = new int[s];
                int i = 0;
                do
                {
                    c = d / 8;
                    m[i++] = d % 8;
                    d = c;
                } while (c >= 8);
                o = d.ToString();
                for (int j = m.Length - 1; j >= 0; j--)
                {
                    o += m[j];
                }
            }
            return o;
        }   

        //十进制转十六进制
        public string DtoX(int d)
        {
            string x = "";
            if (d < 16)
            {
                x = chang(d);
            }
            else
            {
                int c;
                int s = 0;
                int n = d;
                int temp = d;
                while (n >= 16)
                {
                    s++;
                    n = n / 16;
                }
                string [] m = new string[s];
                int i = 0;
                do
                {
                    c = d / 16;
                    m[i++] = chang(d % 16);//判断是否大于10,如果大于10,则转换为A~F的格式
                    d = c;
                } while (c >= 16);
                x = chang(d);
                for (int j = m.Length - 1; j >= 0; j--)
                {
                    x += m[j];
                }
            }
            return x;
        }   

        //判断是否为10~15之间的数,如果是则进行转换
        public string chang(int d)
        {
            string x = "";
            switch (d)
            {
                case 10:
                    x = "A";
                    break;
                case 11:
                    x = "B";
                    break;
                case 12:
                    x = "C";
                    break;
                case 13:
                    x = "D";
                    break;
                case 14:
                    x = "E";
                    break;
                case 15:
                    x = "F";
                    break;
                default:
                    x = d.ToString();
                    break;
            }
            return x;
        }   

        private void button1_Click(object sender, EventArgs e)
        {
            textBox2.Text = DtoB(Convert.ToInt32(textBox1.Text));//十转二进制
        }   

        private void button2_Click(object sender, EventArgs e)
        {
            textBox2.Text = DtoO(Convert.ToInt32(textBox1.Text));//十转八进制
        }   

        private void button3_Click(object sender, EventArgs e)
        {
            textBox2.Text = DtoX(Convert.ToInt32(textBox1.Text));//十转十六进制
        }
    }
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索string
, int
, 进制之间的转换
, tostring
, textbox
, system
, 十进制
, c进制转换算法
, string转int
, 二进制   C
16进制数
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。

时间: 2024-12-23 12:09:14

C#实现十进制数转换为二进制、八进制、十六进制数的算法的相关文章

c++-十进制数转为二进制,再将二进制反转,在转换为十进制

问题描述 十进制数转为二进制,再将二进制反转,在转换为十进制 #include using namespace std; void ReverseArr(int n) { int m=n; int x,count; int i=0; char a[20],b[20]; for(int a1=0;a1 { a[i]=0; b[i]=0; } if(m return; if(m>=0) { while(m!=0) { x=m%2; m=m/2; a[i]=x; i++; } } count =i;

数据结构栈实现进制转换遇到问题十进制数255 输出的十六进制数是F15F15 哪里错了

问题描述 数据结构栈实现进制转换遇到问题十进制数255 输出的十六进制数是F15F15 哪里错了 //进制转换函数 void conversion(int n,int r) { SqStack S;//构建一个栈 InitStack(S); while(n) { Push(S,n%r);//数据入栈 n=n/r; } while(!StackEmpty(S)) { SElemType e; Pop(S,e);//数据出栈 switch(e) { case 0: break; case 1: br

c#-求C#十进制数与二进制补码的相互转换函数?多谢各位大侠了

问题描述 求C#十进制数与二进制补码的相互转换函数?多谢各位大侠了 我想求C#语言写的的16进制显示的字符串与二进制补码相互转换函数 解决方案 //十进制转二进制Console.WriteLine(Convert.ToString(69 2));//十进制转八进制Console.WriteLine(Convert.ToString(69 8));//十进制转十六进制Console.WriteLine(Convert.ToString(69 16));//二进制转十进制Console.WriteL

用汇编语言将十进制数据转换成十六进制数。要求从键盘上输入一个十进制数,然后以十六进制数输出

问题描述 用汇编语言将十进制数据转换成十六进制数.要求从键盘上输入一个十进制数,然后以十六进制数输出 用汇编语言将十进制数据转换成十六进制数.要求从键盘上输入一个十进制数,然后以十六进制数输出,用子程序实现 解决方案 http://www.cnblogs.com/vongang/archive/2011/11/16/2251645.html

十进制负数转换为二进制、八进制、十六进制的知识分享_相关技巧

程序猿们或许对二进制都不陌生,二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.但是很多人都会将二进制转换成整数,但是如何用二进制表示负数呢?有的人会说,在二进制前面加个负数符合.而计算机只能认识0 和 1,又怎么去加个额外的负数符号呢?于是我们就需要用0和1来表示负数.如果想要弄懂这个,我们需要先了解什么是二进制原码. 原码是什么 原码(true form)是一种计算机中对数字的二进制定点表示方法.原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为

HexConversion 二进制 八进制 十六进制 十进制

public class HexConversion { // TODO Auto-generated method stub /** * TODO 进制转换. * * @param cc * http://yunpan.cn/QD8epsIs6YPXG */ public static void main(String[] args) { /** * 基本原理 二进制-->十进制 * * 1101(2)=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13 * * 八进制-->

c++-C++,编写一个递归函数,将任意的十进制正整数转换为八进制数

问题描述 C++,编写一个递归函数,将任意的十进制正整数转换为八进制数 编写一个递归函数,将任意的十进制正整数转换为八进制数,要求用C++语言,递归函数 解决方案 #include #include using namespace std; void Function( int number, string& result ) { int replace = number; int value = number % 8; char ch[ 10 ]; sprintf( ch, "%d&q

c++-编写一个递归函数,将任意的十进制正整数转换为八进制数(不要用C语言,没学过,用C++)

问题描述 编写一个递归函数,将任意的十进制正整数转换为八进制数(不要用C语言,没学过,用C++) 编写一个递归函数,将任意的十进制正整数转换为八进制数(不要用C语言,没学过,用C++) 解决方案 #include <iostream>using namespace std;void foo(int n int base){ if (n == 0) { cout << endl; return; } foo(n / base base); cout << n % base

C#实现二、八、十六进制数转十进制数的算法

二进制换为十进制的方法,例如: 二进制数:11001 十进制数:1*24+1*23+0*22+0*21+1*20=25 八进制换为十进制的方法,例如: 八进制数:32007 十进制数:3*84+2*83+0*82+0*81+7*80=13319 十六进制换为十进制的方法,例如: 十六进制数:a20f(由于十六进制数用a~f表示10~15之间的数,所以计算时将a~f用10~15表示) 十进制数: 10*83+2*82+0*81+15*80=41487 通过以上二.八.十六进制数转十进制数的计算方法