c#二进制转换为十进制不使用Convert.ToInt32()或BitConverter.ToInt32()
时间: 2024-09-20 18:17:44 浏览: 50
如果你不想使用`Convert.ToInt32()`或`BitConverter.ToInt32()`直接进行转换,也可以手动逐位计算,例如通过循环遍历二进制字符串,并将其每一位乘以2的相应次方,然后求和得到十进制值。以下是一个简单的实现方式:
```csharp
public static int BinaryToDecimal(string binary)
{
if (binary == null || binary.Length == 0)
return 0;
int decimalValue = 0;
int power = binary.Length - 1;
foreach (char digit in binary)
{
if (digit == '1')
decimalValue += Math.Pow(2, power);
power--;
}
return decimalValue;
}
```
这个自定义函数从最低有效位开始处理,每次遇到'1'就加到结果上,同时减少当前位的权重。
相关问题
c#十进制转换为二进制不使用Convert.ToInt32()或BitConverter.ToInt32()
在 C# 中,如果你想要将十进制数转换为二进制而不想直接使用 `Convert.ToInt32()` 或 `BitConverter.ToInt32()` 方法,你可以手动通过位运算来实现。以下是一个简单的步骤:
1. 创建一个整型变量存储十进制数值。
2. 使用无符号右移运算符 (`>>`) 来除以 2 并获取余数,余数就是二进制的最低位。
3. 将余数存入新的数组或列表,并继续对原始数值左移一位(`<< 1`)直到达到你所需的精度或者数值变为 0。
4. 反转得到的结果列表,因为开始时我们从最低位开始计算。
例如,这里是一个示例函数来完成这个过程:
```csharp
public static string DecimalToBinaryWithoutConvert(int decimalNumber)
{
if (decimalNumber == 0) return "0"; // 特殊情况处理
List<int> binaryDigits = new List<int>();
while (decimalNumber > 0)
{
binaryDigits.Add(decimalNumber & 1); // 获取最低位
decimalNumber >>= 1; // 移除最低位
}
// 反转列表并连接成字符串
return string.Join("", binaryDigits.Reverse());
}
```
c#二进制转换为十进制
在C#中,你可以使用`Convert.ToInt32()`或`BitConverter.ToInt32()`方法将二进制字符串转换为十进制整数。这里是一个简单的示例:
```csharp
string binaryString = "101010"; // 二进制字符串
int decimalValue = Convert.ToInt32(binaryString, 2); // 第二个参数2表示基数是2,即二进制
// 或者使用 BitConverter
byte[] bytes = new byte[binaryString.Length / 8]; // 保证每个字节有足够的位
for (int i = 0; i < bytes.Length; i++)
{
int bitValue = Convert.ToInt32(binaryString.Substring(i * 8, 8), 2);
bytes[i] = (byte)bitValue;
}
decimalValue = BitConverter.ToInt32(bytes, 0);
```
这两个方法会将给定的二进制字符串解析成相应的十进制数值。
阅读全文