不同进制的表示
- 十进制,最常见的形式,直接用数字赋值即可,例如 int num=1010
- 二进制,以0b开头,例如 int num = 0b1111110010 对应十进制的1010
- 八进制,目前没有特定的表示法,只能用字符串表示
- 十六进制,以0x开头,例如 int num = 0x3f2 对应十进制1010
不管以十进制的形式给变量赋值,还是以二进制或者十六进制,结果是一样的,都能进行整数的各种运算和比较,
十进制转其他进制
- 十进制转二进制,Convert.ToString(num, 2),例如1010转二进制变成:1111110010
- 十进制转八进制,Convert.ToString(num, 8),例如1010转八进制变成:1762
- 十进制转十六进制,Convert.ToString(num, 16),例如1010转十六制变成:3f2
注意转换之后得到的是没有前缀的字符串。
二进制转其他进制
- 二进制转十进制
如果声明的是整数类型,例如 int num = 0b1111110010,那么ToString() 得到的就是该整数的十进制表示, 如果声明的是字符串,例如 string strNum ="1111110010",那么需要先转换成整数Convert.ToInt32(strNum, 2),然后再ToString(),注意输入的字符串不能包含前缀"0b"。
- 二进制转八进制或者十六进制,通常先将二进制转成十进制,然后再转成八进制或者十六进制。
八进制转其他进制
-
八进制转十进制,由于八进制没有直接的表示法,所以一般是从字符串转,例如 string strNum="1762" 表示一个八进制的字符串,需要先转十进制Convert.ToInt32(strNum, 8),然后ToString()。
-
八进制转二进制或者十六进制,需要先转成十进制,然后再转成对应的其他进制。
十六进制转其他进制
- 十六进制转十进制
同二进制转十进制类似,如果声明的是整数类型,例如 int num = 0x3f2,那么ToString() 得到的就是该整数的十进制表示, 如果声明的是字符串,例如 string strNum ="3f2",那么需要先转换成整数Convert.ToInt32(strNum, 16),然后再ToString(),注意输入的字符串不能包含前缀"0x"。
- 十六进制转二进制或者八进制,需要先转成十进制,然后再转成对应的其他进制。