本文摘自PHP中文网,作者零下一度,侵删。
1.十进制 转 二进制 将十进制数不断地除2,将所有余数倒叙填写,即可得到所需二进制数据。
1 2 3 4 5 6 7 8 9 10 11 12 | public static string DecimalToBinary(int vDecimal)
{
List<int> vYuShu = new List<int>();
{int tempYS = vTempValue % 2;
vYuShu.Add(tempYS);
}
{
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开始计);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public static int BinaryToDecimal(string vBinary)
{
{ var tempNum = vBinary[i].ToString(); if (tempNum == "0" )
{
vInput[i] = 0;
} else if (tempNum == "1" )
{
vInput[i] = 1;
} else { throw new Exception( "输入参数不正确,二进制数应仅由:0和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自带的进制转换方式:
1 2 3 | int vDecimal = 99;
Console.WriteLine( "十进制数:{0},转换成二进制:{1}" , vDecimal, vBinary);
Console.WriteLine( "二进制数:{0},转换成十进制:{1}" , vBinary, tempDecimal);
|

4. 十进制 <=> 十六进制
1 2 3 | int vDecimal = 127;
Console.WriteLine( "十进制数:{0},转换成十六进制:{1}" , vDecimal, vStrHex);
Console.WriteLine( "十六进制数:{0},转换成十进制:{1}" , vStrHex, tempDecimal);
|

或者可以:

5. 十进制 <=> 八进制

6. 其它转换

7. 有符号的数 二进制转换
对于有正负号的数据,在转换时与上诉略有不同。
1个字节(8个bits)它不管怎么样还是只能表示256个数,因为有符号所以我们就把它表示成范围:-128 → 127。
用最高位表示符号位,0表示正数,1表示负数。
10000000在计算机中表示最小的负整数。从10000001到 11111111依次表示-127到-1。
负整数在计算机中是以补码形式储存的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | public static int BinaryToDecimalWithSign(string vBinary)
{
{ var tempNum = vBinary[i].ToString(); if (tempNum == "0" )
{
vInput[i] = 0;
} else if (tempNum == "1" )
{
vInput[i] = 1;
} else { throw new Exception( "输入参数不正确,二进制数应仅由:0和1组成" );
}
}
{
nInput[i] = vInput[0];
}
vInput.CopyTo(nInput, nLen - vInput.Length);
vInput = nInput;
}
{
{ if (vInput[vInput.Length - i] == 1)
{
vInput[vInput.Length - i] = 0; break ;
} else {
vInput[vInput.Length - i] = 1;
}
}
{
vInput[i] = 1 - vInput[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;
}
|

[]
以上就是C# 中十进制与二进制、十六进制、八进制转换详解的详细内容!
相关阅读 >>
浅谈.net中的浅拷贝和深拷贝
c#开发微信门户及应用(三)之文本消息和图文消息应答
c#如何使用键值对取代switch...case语句的示例
在.net项目中使用postsharp
.net core使用redis发布订阅方法介绍
浅谈.net core开发日志中edge.js是什么?如何用?
新手学习.net编程计划-1
c#中sql参数传入空值出错误和如何解决办法
关于url后面传中文方法总结
c#与vb.net混合开发测试的详细介绍(图文)
更多相关阅读请进入《csharp》频道 >>
清华大学出版社
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。
转载请注明出处:木庄网络博客 » C# 中十进制与二进制、十六进制、八进制转换详解