0

0

C# 中十进制与二进制、十六进制、八进制转换详解

零下一度

零下一度

发布时间:2017-06-23 15:19:13

|

9825人浏览过

|

来源于php中文网

原创

1.十进制 转 二进制

   将十进制数不断地除2,将所有余数倒叙填写,即可得到所需二进制数据。

        public static string DecimalToBinary(int vDecimal)
        {/* 将十进制的数 vDecimal 不断地除 2,取余数
             * 然后将余数 倒序 填写             */List vYuShu = new List();  // 除 2 过程中产生的余数集int vTempValue= vDecimal;            // 除 2 过程中产生的商数for (; ; )
            {int tempYS = vTempValue % 2;
                vYuShu.Add(tempYS);  // 记住余数vTempValue = vTempValue / 2;if (vTempValue == 0)  // 商数等于0时,结束运算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. 二进制 转 十进制

   将二进制各位上的值(0或1)乘2的(n-1)次方,将每位结果相加。其中,n表示二进制中从右向左的位数(从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("输入参数不正确,二进制数应仅由: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. 自带的转换方式

    C#.Net自带的进制转换方式:

            int vDecimal = 99;// 【10】 → 【2】string vBinary = Convert.ToString(vDecimal, 2);
            Console.WriteLine("十进制数:{0},转换成二进制:{1}", vDecimal, vBinary);// 【2】 → 【10】int tempDecimal = Convert.ToInt32(vBinary, 2);
            Console.WriteLine("二进制数:{0},转换成十进制:{1}", vBinary, tempDecimal);

4. 十进制    十六进制

            int vDecimal = 127;// 【10】 → 【16】string vStrHex = "0x" + Convert.ToString(vDecimal, 16);
            Console.WriteLine("十进制数:{0},转换成十六进制:{1}", vDecimal, vStrHex);// 【16】 → 【10】int tempDecimal = Convert.ToInt32(vStrHex, 16);
            Console.WriteLine("十六进制数:{0},转换成十进制:{1}", vStrHex, tempDecimal);

  或者可以:

5. 十进制 八进制

人民网AIGC-X
人民网AIGC-X

国内科研机构联合推出的AI生成内容检测工具

下载

6.  其它转换

 

7. 有符号的数 二进制转换

   对于有正负号的数据,在转换时与上诉略有不同。

  1个字节(8个bits)它不管怎么样还是只能表示256个数,因为有符号所以我们就把它表示成范围:-128 → 127。

  用最高位表示符号位,0表示正数,1表示负数。

  10000000在计算机中表示最小的负整数。从10000001到 11111111依次表示-127到-1。

  负整数在计算机中是以补码形式储存的。

        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("输入参数不正确,二进制数应仅由: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步:转成10进制数 ----------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) // 为负数            {
                vDecimal = 0 - vDecimal;
            }

            Console.WriteLine("Input binary value:{0}, output decimal value:{1}.", vBinary, vDecimal);return vDecimal;
        }

 

[]

 

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

2

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

2

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

0

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

0

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.29

clawdbot ai使用教程 保姆级clawdbot部署安装手册
clawdbot ai使用教程 保姆级clawdbot部署安装手册

Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

25

2026.01.29

clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址
clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址

clawdbot龙虾机器人官网入口:https://clawd.bot/,clawdbot ai是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

16

2026.01.29

Golang 网络安全与加密实战
Golang 网络安全与加密实战

本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。

8

2026.01.29

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

622

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
麻省理工大佬Python课程
麻省理工大佬Python课程

共34课时 | 5.2万人学习

【web前端】Node.js快速入门
【web前端】Node.js快速入门

共16课时 | 2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号