C#进制转换(⼆进制、⼗六进制、⼗进制互转)
C# 进制转换(⼆进制、⼗六进制、⼗进制互转)
由于⼆进制数在C#中⽆法直接表⽰,所以所有⼆进制数都⽤⼀个字符串来表⽰
例如:⼆进制: 1010 表⽰为字符串:"1010"
int d = 10;
//⼗进制转⼆进制字符串
Console.WriteLine(Convert.ToString(d,2));
//输出: 1010
//⼗进制转⼗六进制字符串
Console.WriteLine(Convert.ToString(d,16));
//输出: a
/
/⼆进制字符串转⼗进制数
string bin = "1010";
Console.WriteLine(Convert.ToInt32(bin,2));
//输出: 10
//⼆进制字符串转⼗六进制数
string bin = "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等⽅⾯。
C#实现转换⼗六进制
任何数据在计算机内部都是以⼆进制保存的,所以进制与数据的存储⽆关,只与输⼊输出有关。所以,对于进制转换,我们只关⼼字符串中的结果。
在上⾯的第 4 条中提到了 ToString() ⽅法可以将数值转换成字符串,不过在字符串中,结果是以⼗进制显⽰的。现在我们带给它加⼀些参数,就可以让C#实现转换成⼗六进制——使⽤ ToString(string) ⽅法。
这⾥需要⼀个 string 类型的参数,这就是格式说明符。⼗六进制的格式说明符是 "x" 或者 "X",使⽤这两种格式说明符的区别主要在于 A-F 六个数字:"x" 代表 a-f 使⽤⼩写字母表⽰,⽽ "X" ⽽表⽰ A-F 使⽤⼤字字母表⽰。如下例:
1. private void TestHex() {
2. int a = 188;字符串长度不够后面补0公式
3. Box1.Text = "";
4. Box1.AppendText("a(10) = " + a.ToString() + "\n");
5. Box1.AppendText("a(16) = " + a.ToString("x") + "\n");
6. Box1.AppendText("a(16) = " + a.ToString("X") + "\n");
7. }
运⾏结果如下:
1. a(10) = 188
2. a(16) = bc
3. a(16) = BC
这时候,我们可能有另⼀种需求,即为了显⽰结果的整齐,我们需要控制⼗六进制表⽰的长度,如果长度不够,⽤前导的 0 填补。解决这个问题,我们只需要在格式说明符“x”或者“X”后写上表⽰长度的数字就⾏了。⽐如,要限制在 4 个字符的长度,可以写成“X4”。在上例中追加⼀句:
1. Box1.AppendText("a(16) = " + a.ToString("X4") + "\n");
其结果将输出 a(16) = 00BC。
现在,我们还要说⼀说如何将⼀个表⽰⼗六进制数的字符串转换成整型。这⼀转换,同样需要借助于 Parse() ⽅法。这⾥,我需要
Parse(string, System.Globalization.NumberStyles) ⽅法。第⼀个参数是表⽰⼗六进制数的字符串,如“AB”、“20”(表⽰⼗进制的 32) 等。第⼆个参数 System.Globalization.NumberStyles 是⼀个枚举类型,⽤来表⽰⼗六进制的枚举值是 HexNumber。因此,如果我们要将“AB”转换成整型,就应该这样写:int b = int.Parse("AB", System.Globalization.NumberStyles.HexNumber),最后得到的 b 的值是 171。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。