有没有内置的方法将整数转换为C#中的字符串(任何基数)?

由于某些奇怪的原因,Convert.ToString()只允许基数值为2,8,10和16; 是否有一些不明确的方式提供2到16之间的任何基础?

可能是为了消除某人输入7而不是8,因为任意基数的使用很少(但不是不存在)。

这是一个可以执行任意基本转换的示例方法。 如果您愿意,可以使用它,没有限制。

string ConvertToBase(int value, int toBase) { if (toBase < 2 || toBase > 36) throw new ArgumentException("toBase"); if (value < 0) throw new ArgumentException("value"); if (value == 0) return "0"; //0 would skip while loop string AlphaCodes = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; string retVal = ""; while (value > 0) { retVal = AlphaCodes[value % toBase] + retVal; value /= toBase; } return retVal; } 

未经测试,但你应该能够从这里弄清楚。

您可以试试http://www.codeproject.com/KB/macros/Convert.aspx 。

您可以尝试以下方法:

http://www.dotnetspider.com/resources/938-Conversion-Decimal-number-any-Base-vice.aspx

这至少给人的印象是你可以有任何基础(从2> 16)。 虽然我有点困惑,为什么你想要!

 //untested -- public domain // if you do a lot of conversions, using StringBuilder will be // much, much more efficient with memory and time than using string // alone. string toStringWithBase(int number, int base) { if(0==number) //handle corner case return "0"; if(base < 2) return "ERROR: Base less than 2"; StringBuilder buffer = new StringBuilder(); bool negative = (number < 0) ? true : false; if(negative) { number=-number; buffer.Append('-'); } int digits=0; int factor=1; int runningTotal=number; while(number > 0) { number = number/base; digits++; factor*=base; } factor = factor/base; while(factor >= 1) { int remainder = (number/factor) % base; Char out = '0'+remainder; if(remainder > 9) out = 'A' + remainder - 10; buffer.Append(out); factor = factor/base; } return buffer.ToString } 

对不起,我没有回答你的问题,但……基地的选择不是仲裁。 你的电脑不断地从基座2(它的内部二进制系统)转换到人类可读的基座10.基座8和16非常容易转换到基座2和从基座2转换,并且经常被使用,因此计算机和人类可以读取值(例如GUID)

 string foo = Convert.ToString(myint,base); 

http://msdn.microsoft.com/en-us/library/14kwkz77.aspx

编辑 :我的坏,这将抛出一个参数exception,除非你传入指定的基数(2,8,10和16)

你可能是SOL,如果你想使用不同的基础(但为什么???)。