- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
背景
我这里有一个控制台应用程序,其中发生了以下事情......
我的问题是这里的 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];
}
这是我在控制台窗口中运行的示例输出。
最佳答案
根据其他用户的建议,这是我使用的对我有用的修复程序。
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 的值。这是新的示例输出。
关于c# - 为什么我的新 BitArray 初始化时使用了错误的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35990036/
我有一个包含以下内容的 BitArray: byte[] myBytes = {0, 0, 2, 176, 168, 3, 19, 0}; BitArray myBitArr = new BitArr
我需要将一个 BitArray(来自 std.bitmanip)分成两半。直到现在我发现切片没有实现,迭代它并附加或分配总是会产生超出范围的异常。我试图将它转换为其他类型(它适合 long/ulong
我该怎么做?我正在尝试计算两个数组何时在同一索引处具有相同的 TRUE/1 值。如您所见,我的代码有多个位数组,并且循环遍历每个位数组,并将它们与带有另一个循环的 comparisonArray 进行
我正在创建一个软件包,它一次接受 16 个 bool 值,将它们放入一个位数组中,然后将它们发送到 PLC 以供 PLC 解包和使用。我的问题有两个: 1) 如果我制作一个 BitArray(16),
我有不同大小的 BitArray,我想在十六进制字符串中进行转换。 我试图将 BitArray 转换为 byte[],但它没有给我正确的格式。 ( Converting a boolean array
如何确保从 BitArray 更改位时,BitArray 值保持在一个范围内。 示例: Given the range [-5.12, 5.12] and a = 010000000000000001
我正在寻找有关并发写入 System.Collections.BitArray 类的线程安全性的信息。 具体来说,请考虑以下人为设计的示例: BitArray bits = new BitArray(
我目前正在尝试使用 BitSet 在 C 中实现埃拉托色尼筛法,但是当我尝试筛选高达 1,000,000(100 万)- 100,000(100,000)的素数时,我遇到了段错误虽然我不明白为什么会出
我试过这样的: BitArray bits = new BitArray(00001110); 但结果是1110 似乎 BitArray 删除了前导零。 是否可以创建一个带前导零的 BitArray?
我正在从医疗设备中提取字节流,遇到了一个非常烦人的数据结构。基本上,我得到一个 2 字节的 block ,其中每个位代表一个 bool 值。这种结构在字节流中出现的频率足以围绕它开发结构/类,但在每种
我正在尝试从整数值初始化一个 System.BitArray 实例。但是,我似乎没有得到正确的值。 我的代码是 var b = new BitArray(BitConverter.Ge
这段代码: BitArray bits = new BitArray(new byte[] { 7 }); foreach (bool bit in bits) { Console.Write
我有一个 System.Collections.BitArray 数组(~3000 项),我想将所有位向左移动 1。但是该集合似乎不支持该操作(即 bitArray << 1 不工作,没有方法)。知道
我有一个长度相当大 (500,000) 的 c# BitArray,我正在尝试获取数组中所有正位集的索引。目前我正在通过以下方式实现这一目标: public int[] GetIndexesForPo
请考虑将斜杠符号(例如 24、30)转换为子网掩码的这个(非家庭作业)练习。 当我复制 BitArray至 byte[] , BitArray 的内部排序导致输出不正确。 例如,输入 numberOf
我遇到了 BitArray 的问题。 目标是模拟 8 个 80bit BitArrays 的堆栈,编号从 0 到 7。 我只需要能够通过索引访问它们,所以我认为一个简单的数组对我来说就足够了。 当初始
我正在尝试解决一个更大的问题。作为其中的一部分,我创建了一个 BitArray 来表示一系列按顺序做出的二元决策。我知道所有有效的决策系列都会有一半的决策是正确的,一半是错误的,但我不知道顺序: t
我已经阅读了关于 BitArray 转换的其他帖子,并亲自尝试了几个,但似乎没有一个能提供我想要的结果。 我的情况是这样的,我有一些控制 LED 灯条的 c# 代码。要向 strip 发出单个命令,我
我创建了以下将按要求执行的函数(将 HEX 字符串转换为 BitArray)。我不确定函数的效率,但我现在的主要问题是 Convert.ToInt64 函数是 endian 特定的。当这被移植到备用芯
背景 我这里有一个控制台应用程序,其中发生了以下事情...... 用户/运算符(operator)将一串位输入控制台,即“0101”。 - 作品 比特串被转换成一个字节。 - 作品 使用我的反转方法反
我是一名优秀的程序员,十分优秀!