gpt4 book ai didi

c# - 为什么我的新 BitArray 初始化时使用了错误的值?

转载 作者:太空宇宙 更新时间:2023-11-03 15:24:21 28 4
gpt4 key购买 nike

背景

我这里有一个控制台应用程序,其中发生了以下事情......

  1. 用户/运算符(operator)将一串位输入控制台,即“0101”。 - 作品
  2. 比特串被转换成一个字节。 - 作品
  3. 使用我的反转方法反转字节数组。 - 作品
  4. 我在控制台窗口中打印出反转的字符串。 - 不起作用

我的问题是这里的 4 号。我从新反转的 reversedBits 值中创建了一个位数组,这就是事情似乎出错的地方。就好像 reversedBitArray 正在使用旧的/未反转的 bits 值而不是 reversedBits 进行初始化,因为我的输出似乎总是 un - 反转字符串。这个错误看起来应该是微不足道的,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];
}

这是我在控制台窗口中运行的示例输出。

Sample Problem Console Window

最佳答案

根据其他用户的建议,这是我使用的对我有用的修复程序。

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 的值。这是新的示例输出。

Sample Solution Console Window

关于c# - 为什么我的新 BitArray 初始化时使用了错误的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35990036/

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