C# 进制转换的实现(二进制、十六进制、十进制互转)
由于二进制数在C#中无法直接表示,所以所有二进制数都用一个字符串来表示
例如:二进制:1010表示为字符串:"1010"
intd=10;
//十进制转二进制字符串 Console.WriteLine(Convert.ToString(d,2)); //输出:1010 //十进制转十六进制字符串 Console.WriteLine(Convert.ToString(d,16)); //输出:a //二进制字符串转十进制数 stringbin="1010"; Console.WriteLine(Convert.ToInt32(bin,2)); //输出:10 //二进制字符串转十六进制数 stringbin="1010"; Console.WriteLine(string.Format("{0:x}",Convert.ToInt32(bin,2)); //输出:a //十六进制转二进制字符串 Console.WriteLine(Convert.ToString(0xa,2)); //输出:1010 //十六进制转十进制数 Console.WriteLine(Convert.ToString(0xa,10)); //输出:10
C#实现转换十六进制
C#语言有很多值得学习的地方,这里我们主要介绍C#实现转换十六进制,包括介绍用来表示十六进制的枚举值是HexNumber等方面。
任何数据在计算机内部都是以二进制保存的,所以进制与数据的存储无关,只与输入输出有关。所以,对于进制转换,我们只关心字符串中的结果。
在上面的第4条中提到了ToString()方法可以将数值转换成字符串,不过在字符串中,结果是以十进制显示的。现在我们带给它加一些参数,就可以让C#实现转换成十六进制——使用ToString(string)方法。
这里需要一个string类型的参数,这就是格式说明符。十六进制的格式说明符是"x"或者"X",使用这两种格式说明符的区别主要在于A-F六个数字:"x"代表a-f使用小写字母表示,而"X"而表示A-F使用大字字母表示。如下例:
privatevoidTestHex(){ inta=188; thistextBoxText=""; thistextBoxAppendText("a(10)="+aToString()+"\n"); thistextBoxAppendText("a(16)="+aToString("x")+"\n"); thistextBoxAppendText("a(16)="+aToString("X")+"\n"); }
运行结果如下:
a(10)=188
a(16)=bc
a(16)=BC
这时候,我们可能有另一种需求,即为了显示结果的整齐,我们需要控制十六进制表示的长度,如果长度不够,用前导的0填补。解决这个问题,我们只需要在格式说明符“x”或者“X”后写上表示长度的数字就行了。比如,要限制在4个字符的长度,可以写成“X4”。在上例中追加一句:
this.textBox1.AppendText("a(16)="+a.ToString("X4")+"\n");
其结果将输出a(16)=00BC。
现在,我们还要说一说如何将一个表示十六进制数的字符串转换成整型。这一转换,同样需要借助于Parse()方法。这里,我需要Parse(string,System.Globalization.NumberStyles)方法。第一个参数是表示十六进制数的字符串,如“AB”、“20”(表示十进制的32)等。第二个参数System.Globalization.NumberStyles是一个枚举类型,用来表示十六进制的枚举值是HexNumber。因此,如果我们要将“AB”转换成整型,就应该这样写:intb=int.Parse("AB",System.Globalization.NumberStyles.HexNumber),最后得到的b的值是171。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。