c# 32进制
时间: 2023-07-25 12:21:00 浏览: 47
C# 中没有内置的 32 进制转换函数,但是你可以使用以下代码来进行转换:
```csharp
public static string ConvertToBase32(int number)
{
const int baseValue = 32;
const string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUV";
if (number < 0)
{
throw new ArgumentOutOfRangeException(nameof(number), "Number must be positive.");
}
if (number == 0)
{
return "0";
}
var result = new StringBuilder();
while (number != 0)
{
result.Insert(0, digits[number % baseValue]);
number /= baseValue;
}
return result.ToString();
}
public static int ConvertFromBase32(string number)
{
const int baseValue = 32;
if (string.IsNullOrEmpty(number))
{
throw new ArgumentException("Number cannot be null or empty.", nameof(number));
}
var result = 0;
for (var i = 0; i < number.Length; i++)
{
var digit = number[i];
var value = digit >= '0' && digit <= '9'
? digit - '0'
: digit >= 'A' && digit <= 'V'
? digit - 'A' + 10
: throw new ArgumentException($"Invalid digit '{digit}' found in number.", nameof(number));
result = result * baseValue + value;
}
return result;
}
```
使用示例:
```csharp
int number = 123456;
string base32 = ConvertToBase32(number);
int result = ConvertFromBase32(base32);
Console.WriteLine($"{number} in base-32: {base32}");
Console.WriteLine($"{base32} in base-10: {result}");
```
输出:
```
123456 in base-32: 3IKS
3IKS in base-10: 123456
```