背景
我在这里有一个控制台应用程序,会发生以下情况...
我的问题是这里的第4号。我从新反转的reversedBits
值中创建了一个位数组,这就是出现问题的地方。好像reversedBitArray
正在使用旧的/未反转bits
值而不是reversedBits
进行初始化,因为我的输出似乎总是未反转的字符串。这个错误似乎应该是如此微不足道,reversedBits
是正确反转的值,因此声明reversedBitArray
时存在一些问题,但我无法弄清楚是什么。以下是我的所有源代码,包括:
主控制台应用程序。
static void Main(string[] args)
{
BitArray reversedBitArray = null;
String bitString = String.Empty;
byte reversedBits = 0;
byte bits = 0;
// prompt the user to enter a string of bits
Console.WriteLine("Enter a string of bits here: ");
// wait for the user to enter the string of bits
bitString = Console.ReadLine();
// convert the string of bits into an integer
bits = Convert.ToByte(bitString, 2);
// reverse all of the bits
reversedBits = ReverseBits(bits);
// display the reversed bits
Console.WriteLine("\nThe reversed bit string is...");
reversedBitArray = new BitArray(new byte[] { reversedBits });
foreach (bool value in reversedBitArray)
{
Console.Write(Convert.ToInt32(value));
}
// wait for the user to exit
Console.WriteLine("\n\nPress any key to exit...");
while (!Console.KeyAvailable)
{
Thread.Sleep(100);
}
// exit the console application
Environment.Exit(0);
}
位反转方法。
static byte ReverseBits(byte x)
{
BitArray myBitArray
byte[] singleElementArray = null;
int bitArrayMidPoint = 0;
int bitArrayLength = 0;
// get a bit array
myBitArray = new BitArray(new byte[] { x });
// get the length and mid-point
bitArrayLength = myBitArray.Length;
bitArrayMidPoint = (bitArrayLength / 2);
// start the reversal
for (int i = 0; i < bitArrayMidPoint; i++)
{
bool bit = myBitArray[i];
myBitArray[i] = myBitArray[bitArrayLength - i - 1];
myBitArray[bitArrayLength - i - 1] = bit;
}
// back to a byte
singleElementArray = new byte[1];
myBitArray.CopyTo(singleElementArray, 0);
// return the reversed value
return singleElementArray[0];
}
以下是我在控制台窗口中运行的示例输出。
答案 0 :(得分:0)
正如其他用户所建议的那样,我使用的修复程序适用于我。
static void Main(string[] args)
{
BitArray reversedBitArray = null;
String bitString = String.Empty;
byte reversedBits = 0;
byte bits = 0;
// prompt the user to enter a string of bits
Console.WriteLine("Enter a string of bits here: ");
// wait for the user to enter the string of bits
bitString = Console.ReadLine();
// convert the string of bits into an integer
bits = Convert.ToByte(bitString, 2);
// reverse all of the bits
reversedBits = ReverseBits(bits);
// display the reversed bits
Console.WriteLine("\nThe reversed bit string is...");
reversedBitArray = new BitArray(new byte[] { reversedBits });
for (int i = (reversedBitArray.Length - 1); i > 0; i--)
{
Console.Write(Convert.ToInt32(reversedBitArray[i]));
}
// wait for the user to exit
Console.WriteLine("\n\nPress any key to exit...");
Console.ReadKey();
// exit the console application
Environment.Exit(0);
}
这只是以相反的顺序打印BitArray的值。这是新的示例输出。