背景
我这里有一个控制台应用程序,发生以下情况...
我的问题是这里的4号。我从新反转的reversedBits
值中创建了一个位数组,这似乎是哪里出错了。好像reversedBitArray
是用旧的/未反转的bits
值而不是初始化reversedBits
,因为我的输出似乎始终是未反转的String。这个错误看起来应该是微不足道的,它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];
}
这是我在控制台窗口中运行的示例输出。
正如其他用户所建议的那样,这是我使用的对我有用的修复程序。
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的值。这是新的示例输出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句