我有一个长度为900的整数数组,只包含二进制数据[0,1]。 我想缩短数组的长度而不会丢失二进制数据格式(原始数组值)。
是否可以在C#中将900的数组长度缩短为10或20长度?
答案 0 :(得分:5)
Bitarray类将为你提供几乎1/3的int数组长度。
答案 1 :(得分:1)
您实际上可以对位应用一些压缩然后存储它。如果只有1和0,运行长度编码可能有助于在非最坏的情况下大幅减小大小。
答案 2 :(得分:0)
尝试使用System.Collections.BitArray
以下是示例代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
System.Collections.BitArray bits = new System.Collections.BitArray(900);
// Setting all bits to 0
bits.SetAll(false);
// Here Im setting 21st bit in array
bits[21] = true;
// etc...
int[] nativeBits = new int[29];
// Packing your bits in int array
bits.CopyTo(nativeBits, 0);
// This prints 2097152. this is 2^21
Console.WriteLine("First element is:"+nativeBits[0].ToString());
}
}
}
nativeBits数组仅包含29个元素。现在你可以用字符串
转换它答案 3 :(得分:0)
实际上,你有一个900位的二进制整数。有很多方法可以保存“数字”,具体取决于您对它的要求和速度。
问问自己:
arr[n] = something
)等等。
然后,再次询问或修改原始问题。
否则,BitArray
编辑:
因为我们发现了一些东西(一点点),我建议你自己开一个班。
类将有一个容器,如byte []和方法,用于在某个位置设置和取消设置项目。
从两个数组中检查公共1将简单到基于字节到数字的&& -ing数组。