Convert.ToString
एक विशिष्ट आधार में एक संख्या को इसके समकक्ष स्ट्रिंग प्रतिनिधित्व में बदलने के लिए इस्तेमाल किया जा सकता है।
उदाहरण:
string binary = Convert.ToString(5, 2); // convert 5 to its binary representation
Console.WriteLine(binary); // prints 101
हालाँकि, जैसा कि टिप्पणियों द्वारा बताया गया है, Convert.ToString
केवल निम्नलिखित सीमित का समर्थन करता है - लेकिन आमतौर पर पर्याप्त - आधारों का सेट: 2, 8, 10, या 16।
अद्यतन (किसी भी आधार में बदलने की आवश्यकता को पूरा करने के लिए):
मुझे बीसीएल में किसी भी विधि के बारे में पता नहीं है, जो किसी भी आधार पर संख्याओं को परिवर्तित करने में सक्षम है, इसलिए आपको अपनी छोटी उपयोगिता फ़ंक्शन लिखना होगा। एक सरल नमूना ऐसा लगेगा (ध्यान दें कि यह निश्चित रूप से स्ट्रिंग के संयोजन की जगह से तेज किया जा सकता है):
class Program
{
static void Main(string[] args)
{
// convert to binary
string binary = IntToString(42, new char[] { '0', '1' });
// convert to hexadecimal
string hex = IntToString(42,
new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F'});
// convert to hexavigesimal (base 26, A-Z)
string hexavigesimal = IntToString(42,
Enumerable.Range('A', 26).Select(x => (char)x).ToArray());
// convert to sexagesimal
string xx = IntToString(42,
new char[] { '0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x'});
}
public static string IntToString(int value, char[] baseChars)
{
string result = string.Empty;
int targetBase = baseChars.Length;
do
{
result = baseChars[value % targetBase] + result;
value = value / targetBase;
}
while (value > 0);
return result;
}
/// <summary>
/// An optimized method using an array as buffer instead of
/// string concatenation. This is faster for return values having
/// a length > 1.
/// </summary>
public static string IntToStringFast(int value, char[] baseChars)
{
// 32 is the worst cast buffer size for base 2 and int.MaxValue
int i = 32;
char[] buffer = new char[i];
int targetBase= baseChars.Length;
do
{
buffer[--i] = baseChars[value % targetBase];
value = value / targetBase;
}
while (value > 0);
char[] result = new char[32 - i];
Array.Copy(buffer, i, result, 0, 32 - i);
return new string(result);
}
}
अपडेट 2 (प्रदर्शन में सुधार)
परिणाम स्ट्रिंग बनाने के लिए स्ट्रिंग संघनन के बजाय एक सरणी बफर का उपयोग करना विशेष रूप से बड़ी संख्या (प्रदर्शन विधि IntToStringFast
) पर एक प्रदर्शन में सुधार देता है । सबसे अच्छे मामले में (यानी सबसे लंबा संभव इनपुट) यह विधि लगभग तीन गुना तेज है। हालाँकि, 1-अंकीय संख्याओं के लिए (अर्थात लक्ष्य आधार में 1-अंकीय), IntToString
अधिक तेज़ होगा।