优秀的编程知识分享平台

网站首页 > 技术文章 正文

C# 进制转换技巧(c#10进制转2进制)

nanyue 2024-08-06 18:05:08 技术文章 8 ℃

在C#中,可以使用多种方法进行进制转换。以下是一些常见的进制转换方法:

从十进制到其他进制:

使用 Convert 类

int decimalNumber = 123;
string binaryString = Convert.ToString(decimalNumber, 2); // 二进制表示
string octalString = Convert.ToString(decimalNumber, 8); // 八进制表示
string hexString = Convert.ToString(decimalNumber, 16); // 十六进制表示

使用 BitConverter 类

int decimalNumber = 123;
byte[] bytes = BitConverter.GetBytes(decimalNumber);
string binaryString = string.Join("", bytes.Select(b => Convert.ToString(b, 2)));

手动转换到二进制

int decimalNumber = 123;
string binaryString = "";
while (decimalNumber > 0)
{
    binaryString = (decimalNumber % 2) + binaryString;
    decimalNumber /= 2;
}

手动转换到八进制

int decimalNumber = 123;
string octalString = "";
while (decimalNumber > 0)
{
    octalString = (decimalNumber % 8) + octalString;
    decimalNumber /= 8;
}

手动转换到十六进制

int decimalNumber = 123;
string hexString = "";
while (decimalNumber > 0)
{
    int remainder = decimalNumber % 16;
    if (remainder < 10)
    {
        hexString = remainder.ToString() + hexString;
    }
    else
    {
        hexString = ((char)(remainder - 10 + 'A')) + hexString;
    }
    decimalNumber /= 16;
}

从其他进制到十进制:

使用 Convert 类

string binaryString = "1111011";
int decimalNumber = Convert.ToInt32(binaryString, 2);

string octalString = "173";
decimalNumber = Convert.ToInt32(octalString, 8);

string hexString = "7B";
decimalNumber = Convert.ToInt32(hexString, 16);

使用 Parse 或 TryParse 方法

string binaryString = "1111011";
if (int.TryParse(binaryString, NumberStyles.Binary, CultureInfo.InvariantCulture, out int decimalNumber))
{
    // 转换成功
}

string octalString = "173";
if (int.TryParse(octalString, NumberStyles.Octal, CultureInfo.InvariantCulture, out decimalNumber))
{
    // 转换成功
}

string hexString = "7B";
if (int.TryParse(hexString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out decimalNumber))
{
    // 转换成功
}

手动转换从二进制到十进制

string binaryString = "1111011";
int decimalNumber = 0;
for (int i = 0; i < binaryString.Length; i++)
{
    decimalNumber = decimalNumber * 2 + (binaryString[i] - '0');
}

手动转换从八进制到十进制

string octalString = "173";
int decimalNumber = 0;
for (int i = 0; i < octalString.Length; i++)
{
    decimalNumber = decimalNumber * 8 + (octalString[i] - '0');
}

手动转换从十六进制到十进制

string hexString = "7B";
int decimalNumber = 0;
for (int i = 0; i < hexString.Length; i++)
{
    char c = hexString[i];
    if (c >= '0' && c <= '9')
    {
        decimalNumber = decimalNumber * 16 + (c - '0');
    }
    else if (c >= 'A' && c <= 'F')
    {
        decimalNumber = decimalNumber * 16 + (c - 'A' + 10);
    }
    else if (c >= 'a' && c <= 'f')
    {
        decimalNumber = decimalNumber * 16 + (c - 'a' + 10);
    }
}

在进行进制转换时,需要确保输入字符串的格式正确,并且使用适当的方法来处理可能出现的转换错误。对于较大的数值或需要频繁转换的场景,建议使用标准库提供的方法,如 Convert 类,因为它们经过优化,使用起来更加安全和方便。

最近发表
标签列表