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
) একটি কার্যকারিতা উন্নতি দেয় । সেরা ক্ষেত্রে (অর্থাত্ দীর্ঘতম সম্ভাব্য ইনপুট) এই পদ্ধতিটি প্রায় তিনগুণ দ্রুত is যাইহোক, 1-সংখ্যার সংখ্যার জন্য (অর্থাত্ লক্ষ্য ভিত্তিতে 1-অঙ্ক) IntToString
দ্রুত হবে faster