gpt4 book ai didi

c# - 数学幂加数的相反方法

转载 作者:行者123 更新时间:2023-11-30 13:21:05 25 4
gpt4 key购买 nike

我有将 bool 数组转换为整数的方法。看起来像这样

class Program
{
public static int GivMeInt(bool[] outputs)
{
int data = 0;
for (int i = 0; i < 8; i++)
{
data += ((outputs[i] == true) ? Convert.ToInt32(Math.Pow(2, i)) : 0);
}
return data;

}

static void Main(string[] args)
{
bool[] outputs = new bool[8];
outputs[0] = false;
outputs[1] = true;
outputs[2] = false;
outputs[3] = true;
outputs[4] = false;
outputs[5] = false;
outputs[6] = false;
outputs[7] = false;
int data = GivMeInt(outputs);
Console.WriteLine(data);
Console.ReadKey();
}
}

现在我想使相反的方法返回 bool 值数组由于我对 .NET 和 C# 的了解很短,直到现在我脑子里只有 switch 语句的硬编码或者每个可能的 int 值的 if 条件。

public static bool[] GiveMeBool(int data)
{
bool[] outputs = new bool[8];

if (data == 0)
{
outputs[0] = false;
outputs[1] = false;
outputs[2] = false;
outputs[3] = false;
outputs[4] = false;
outputs[5] = false;
outputs[6] = false;
outputs[7] = false;
}
//After thousand lines of coed
if (data == 255)
{
outputs[0] = true;
outputs[1] = true;
outputs[2] = true;
outputs[3] = true;
outputs[4] = true;
outputs[5] = true;
outputs[6] = true;
outputs[7] = true;
}
return outputs;
}

我知道一定有更简单的方法。

最佳答案

您需要使用按位运算符:(已测试)

public static bool[] GiveMeBool(int data) {
bool[] outputs = new bool[8];

for(int i = 0; i < 8; i++)
outputs[i] = (data & (1 << i)) == (1 << i);

return outputs;
}

您还可以使用按位运算符使您的原始大大更快:(未测试)

public static int GivMeInt(bool[] outputs) {
int data = 0;
for (int i = 0; i < 8; i++)
data += outputs[i] ? 1 << i : 0;

return data;
}

关于c# - 数学幂加数的相反方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2907553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com