摘要:如何把任何进制字符串转成整数是很简单的,通常都使用a. Convert.ToInt32(string value,? int fromBase);b. Int32.Parse(string?s,?NumberStyles?style);c. Double.TryParse(string s, NumberStyles style, IFormatProvider provider, out int result);我们可以通过设置fromBase或NumberStyles来控制是哪种进制的数值,比如: // 0x前缀可选string s = "0x8564"; int?nRet = Convert.ToInt32(s, 16); 这三种方法不同是如果解析失败,Int32.Parse(s)总会抛出异常;Convert.ToInt32(s)在s为null的情况下不会抛出异常而是简单的返回0给调用方;而Double.TryParse(ss, nRet)则无论如何都不抛出异常,只会返回true或false来说明解析是否成功,如果解析失败,调用方将会得到0值。 但在C#中把一个整数转成二进制或十六进制字符串输出怎么办呢,在C++或MFC中格式化输出是非常简单的,使用printf或CString的Format一句话就搞定:printf( "Decimal %d as:\n Hex: %Xh C hex: 0x%x Octal: %o\n",count, count, count, count ); CString strOutput; strOutput.Format("Decimal %d as:\n Hex: %Xh C hex: 0x%x Octal: %o\n",count, count, count, count); ?我问HopeQ, 他是高手中的高手,他告诉我没有现成的办法,那就只能不停的以基数取模并除以基数构成一个字符串了。本来自己飞快的写了一个函数,后来一看MSDN,在MSDN的源代码中有一个类叫AnyRadix,AnyRadix 实现ICustomFormatter, IFormatProvider接口,也不错。 感谢Cavingdeep帮助,说.net还是提供了这样的函数Convert.ToString Method (Int32, Int32),向Cavingdeep学习. int n = 89; string str = Convert.ToString(n, 2); ...[阅读全文]