最近用到 进制间的转换,之前每次都从网上查,现在整理一下,以备查阅。上代码:
1 private static void Test() 2 { 3 //十进制 转 二进制字符串 4 Console.WriteLine(Convert.ToString(69, 2)); 5 6 //十进制 转 十六进制字符串 7 //方式1: 8 Console.WriteLine(Convert.ToString(69, 16)); 9 //方式2: 10 int number = 69; 11 String hex = number.ToString("X"); 12 13 //二进制字符串 转 十进制数 14 Console.WriteLine(Convert.ToInt32("11111111", 2)); 15 16 //二进制字符串 转 十六进制数 (其实还是先转十进制数) 17 Console.WriteLine(string.Format("{0:x}",Convert.ToInt32("11111111",2))); 18 19 //十六进制字符串 转 十进制数 20 //方式1: 21 Console.WriteLine(Convert.ToInt32("FF", 16)); 22 //方式2: 23 int.Parse("FF",System.Globalization.NumberStyles.AllowHexSpecifier); 24 25 //十六进制转二进制字符串 26 Console.WriteLine(Convert.ToString(0xff, 2)); 27 }
由于二进制数在C#中无法直接表示,所以所有二进制数都用一个字符串来表示,比如:“1011”。
有些时候需要在二进制字符串前面补0,来达到指定的长度,比如将"111" 转成8个长度的 "00000111" 字符串。提供以下方法进行转换:
1 private static void Test2() 2 { 3 int i=10; 4 //方法1: 5 Console.WriteLine(i.ToString("D8")); 6 //输出: 00000010 7 8 9 //方法2: 10 Console.WriteLine(i.ToString("00000000")); 11 //输出: 00000010 12 13 14 //方法3:推荐 15 Console.WriteLine(Convert.ToString(i, 2).PadLeft(8, '0')); 16 //输出: 00001010 17 }
呵呵,有不对的地方,请指出~~ :)