c# – 相反的数学方法添加数字的方法
发布时间:2020-12-15 19:36:19 所属栏目:百科 来源:网络整理
导读:我有将Booleans数组转换为整数的方法.看起来像这样 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; } st
我有将Booleans数组转换为整数的方法.看起来像这样
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(); } } 现在我想让反向方法返回布尔值的数组 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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |