例如,我有一个像这样的数组
int[] array = {1,0,0,1,0}
和一个int variable=0;
我想将所有数组元素设置为变量。我该怎么办?
variable=10010
另外,如果考虑这种情况的逆转吗?变量的值设置为数组吗?
int something=10000 to int[] something={1,0,0,0,0}
感谢您的所有贡献
答案 0 :(得分:2)
//==============go forwards===================
int[] array = { 1, 0, 0, 1, 0 };
int variable = 0;
for (int i = 0; i < array.Length; ++i)
{
//first element
if (i == 0)
variable = array[i];
else
{
variable *= 10;
variable += array[i];
}
}
//print resualts
Console.WriteLine(variable);
//===================go backwards===============
int variable2 = 10010;
//convert it into a char array
string value = variable2+"";
//set the array length based on the size
int[] reverse = new int[value.Length];
//loop
for (int i = 0; i < value.Length; ++i)
{
//grab the number from a char value and push it into the array
reverse[i] = (int)Char.GetNumericValue(value[i]);
}
//print out
for(int i = 0; i <reverse.Length;++i)
{
Console.WriteLine("[" + i + "] = " + reverse[i]);
}
答案 1 :(得分:0)
我在这里打电话,请耐心等待,但是如果性能不成问题,那该怎么办呢?
int.Parse(string.Join(string.Empty, array.Select(d => d.ToString()));
很显然,您在解析时需要一些错误处理,以防止溢出,无效字符等。
答案 2 :(得分:0)
还有另一种方法,但是不像其他方法那么紧凑。此方法演示了从0和1的数组构造int的按位操作。
class Program
{
// converts array of 0's and 1's to an int, and assumes big endian format.
static int bitArrayToInt(int[] bit_array)
{
int rc = 0;
for (int i = 0; i < bit_array.Length; i++)
{
rc <<= 1; // bit shift left
rc |= bit_array[i]; // set LSB according to arr[i].
}
return rc;
}
static void Main(string[] args)
{
int[] array = { 1, 0, 0, 1, 0 };
int rc = bitArrayToInt(array);
System.Console.WriteLine("{0} = {1} binary",rc, Convert.ToString(rc, 2));
System.Console.ReadLine();
}
}
如何解决问题有很多选择。
答案 3 :(得分:0)
我能想到的最快捷的方法。
byte[] array = { 1, 0, 1, 0, 0 };
string temp = "";
int result = 0;
for (int i = 0; i < array.Length; i++)
temp += array[i].ToString();
result = Convert.ToInt32(temp);