【发布时间】:2019-02-17 22:40:15
【问题描述】:
我需要将几个十进制数字(或字符串或 1 和 0)转换为二进制组合。在 .NET 中,我看到许多使用 Byte 的库。字节是对 8 位的操作。在我的情况下,我必须使用需要连接在一起的一组 3 位。
例如:
对于过滤器或分区,我有一个 3 位。
我应该用什么来帮助我进行这种转换?此时我尝试理解 BitArray 但我不明白如何创建特定大小的位然后轻松填充它们。
这是我已经做过的
BitArray headerBits = new BitArray(new bool[] { false, false, true, true, false, false, false, false }); // 8
BitArray filterBits = new BitArray(new bool[] { false, true, true }); // 11
BitArray PartitionBits = new BitArray(new bool[] { true, false, true }); // 14
BitArray CompanyPrefixBits = new BitArray(new bool[] { false, false }); // 16
让我们试试这 16 个第一位。我想要的结果是
3074
编辑 ------
BitArray headerBits = new BitArray(new bool[] { false, false, true, true, false, false, false, false }); // 8
BitArray filterBits = new BitArray(new bool[] { false, true, true }); // 11
BitArray PartitionBits = new BitArray(new bool[] { true, false, true }); // 14
BitArray CompanyPrefixBits = new BitArray(new bool[] { false, false }); // 16
BitArray newBitArray = new BitArray(headerBits.Cast<bool>()
.Concat(filterBits.Cast<bool>())
.Concat(PartitionBits.Cast<bool>())
.Concat(CompanyPrefixBits.Cast<bool>())
.ToArray());
var byteArray = newBitArray.ToByteArray();
Console.WriteLine($"{BitConverter.ToString(byteArray, 0)}");
// Result is 0C-2E
// I expect 30-74
这怎么可能?
【问题讨论】:
-
您是否尝试检索或设置过滤器和分区?
-
我添加了我想要的示例
-
所以您尝试将数据显示为十六进制、十进制、八进制或二进制格式的文本?
-
截图来自 Windows Calculator 但我只对十六进制感兴趣
标签: c# bit-manipulation