0基础学C#笔记03:进制转换


前言

首先我们知道在计算机当中所有的数据都是用二进制存储,但是我们不方便记忆、查看、使用,所以在代码当中一般使用的是十进制。不过其实我们在代码中我们可以直接使用二进制、十六进制或其它进制。

int a = 0b1010;
Console.WriteLine(a);

int b = 0x1A;
Console.WriteLine(b);

在这里插入图片描述


一、十进制转二进制、八进制、十六进制

1、类方法:使用Convert类方法ToString

Console.WriteLine("整型:" + x + "的二进制为:" + Convert.ToString(x, 2));
Console.WriteLine("整型:" + x + "的八进制为:" + Convert.ToString(x, 8));
Console.WriteLine("整型:" + x + "的十六进制为:" + Convert.ToString(x, 16));

打印结果
在这里插入图片描述

2、自己写:

  • 十进制转二进制
 /// <summary>
 /// 转换为二进制
 /// </summary>
 /// <param name="value"></param>
 /// <returns></returns>
 public  static  int  ToErJin( int  value)
 {
     int  temp = 0;
     int  shang = 1;
     int  yushu;
     while  (shang != 0)
     {
         shang = ( int )value / 2;
         yushu = value % 2;
         value = shang;
         temp += yushu;
         if  (shang != 0)
         {
             temp = temp * 10;
         }
     }
     //最后将 temp 倒序
     string  tempStr = temp.ToString();
     int  tempLength = tempStr.Length;
     string  resultStr =  string .Empty;
     for  ( int  i = 0; i < tempLength; i++)
     {
         resultStr = tempStr[i] + resultStr;
     }
     return  int .Parse(resultStr);
 }

二、二进制、八进制、十六进制转十进制

1、使用Convert类方法ToInt32

Console.WriteLine("二进制1010的十进制为:" + Convert.ToInt32("1010", 2));
Console.WriteLine("八进制10的十进制为:"  + Convert.ToInt32("10", 8));
Console.WriteLine("十六进制1a的十进制为:" + Convert.ToInt32("1a", 16));

打印结果
在这里插入图片描述

2、自己写

/// <summary>
/// 转换为十进制(主要算法:个位数 * 2的零次方 + 十位数 * 2的一次方 + 百位数 * 2的二次方 + ...)
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public  static  int  ToShijin2( int  value)
{
    int  temp = 0;
    int  shang = value;
    int  yushu;
    int  mark = 0;
    while  (shang != 0)
    {
        yushu = shang % 10;
        shang = shang / 10;
        temp += yushu * ( int )Math.Pow(2, mark);
        mark++;
    }
    return  temp;
}
/// <summary>
/// 二进制转十进制的另一种方法(主要算法:1110111 = 1 * 2~6 + 1 * 2~5 + 1 * 2~4 + 0 * 2~3 + 1 * 2~2 + 1 * 2~1 + 1 * 2~0)
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public  static  int  ToShijin( int  value)
{
    string  strValue = value.ToString();
    int  valueLength = strValue.Length;
    int  result = 0;
    for  ( int  i = 0; i < valueLength; i++)
    {
        result +=  int .Parse(strValue[i].ToString()) * ( int )Math.Pow(2, valueLength - 1 - i);
    }
    return  result;
}
}

经验总结

我们有时十进制转二进制时只会显示少于8位的01,我们可以通过PadLeft进行数据填充

Console.WriteLine("整型:" + x + "的二进制为:" + Convert.ToString(x, 2).PadLeft(8,'0'));

打印结果
在这里插入图片描述

扩展延伸

1.十六进制转浮点数

byte[] bt = new byte[4] { 0x7b, 0x14, 0x2e, 0x3f };
float ff = BitConverter.ToSingle(bt, 0);//0.68

2、浮点数转十六进制数

 float f = 0.68f;
 string str1 = BitConverter.ToString(BitConverter.GetBytes(f)).Replace("-", ""); //结果:7B142E3F
 string str2 = BitConverter.ToString(BitConverter.GetBytes(f));    //结果:7B-14-2E-3F
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BeanGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值