问题标签 [bitarray]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2647 浏览

c# - 使用 bitarray 抓取位并建立新值

如果我取一个 uint 值 = 2921803 (0x2C954B),它实际上是一个 4 字节包 (4B 95 2C 00),并且我想使用 bitarray 获取它的字节版本的 16 个最低有效位,我将如何去做?

这就是我尝试这样做的方式:

在这一点上,我都转过身来。我确实试过这个:

这给了我所有的信息,但完全相反,从 [31] 读取到 [0]。最终,我期待/希望得到 19349 (4B 95) 作为我的答案。

这就是我希望实现该功能的方式:

0 投票
6 回答
16970 浏览

c++ - How to store a bit-array in C++?

What's the best way to store a bit array in C++ (no Boost, just standard containers), representing, for example, a volume allocation bitmap?

I thought std::vector<bool> was a great idea, but apparently it's Evil and deprecated, so is there a better choice?

Also:

If I have a byte array in memory, how would I go about copying them to the recommended container?
(I'm having trouble figuring this out for vector<bool>.)

0 投票
3 回答
2154 浏览

python - 使用 Python 位串测量霍夫曼编码的效率

我有以下字符串,我想对其进行霍夫曼编码并有效地存储到一个位数组中:

中符号的频率为sequence

我将其翻译成霍夫曼代码字典:

然后,我使用 Pythonbitstring包将字符串逐个字符地转换为BitArray类的实例,我称之为bitArray,其中包含用其各自的霍夫曼代码编码的每个字符的位:

这是以字节为单位的位数组:

我必须使用tobytes()而不是bytes,因为我生成的位数组不会均匀地分成 8 位段。

当我计算BitArray表示的存储效率(位数组和输入字符串的大小之比)时,我得到的性能比不编码输入字符串时更差:

我是否正确测量存储效率?(如果我对更长的输入字符串进行编码,这个比率会提高,但它似乎接近 0.28 左右的渐近极限。我想确认这是否是衡量事物的正确方法。)

编辑

以下两种方法产生不同的答案:

我不确定该相信哪个。但是在将数据写入存储的过程中,我认为我需要字节表示,这使我倾向于选择第一个结果。

0 投票
2 回答
519 浏览

c# - BitArray 上的操作

可能重复:
如何将 BitArray 转换为单个 int?

如何将整数读取为 a BitArray(6)(假设可以包含)以及如何将 a 转换BitArray(6)为无符号/有符号整数。

0 投票
8 回答
159208 浏览

mongodb - 在 MongoDB 中自动递增以存储唯一用户 ID 的序列

我正在制作一个分析系统,API 调用会提供一个唯一的用户 ID,但它不是按顺序排列的而且太稀疏了。

我需要为每个唯一用户 ID 提供一个自动增量 ID,以在 bitarray/bitset 中标记分析数据点。因此,第一个用户遇到的将对应于 bitarray 的第一位,第二个用户将是 bitarray 中的第二位,依此类推。

那么有没有一种可靠而快速的方法来在 MongoDB 中生成增量唯一用户 ID?

0 投票
3 回答
193 浏览

python - 如何提高这个计数程序的性能?

给定一个文件如下所示:

第一个字段是一个 ID,即in range(0, 200000000). 第二个字段表示一个类型,即in range(1, 5). 并且类型1和类型2属于一个共同的范畴S1,而类型3和类型4属于S2。一个 ID 可能有多个不同类型的记录。该文件大小约为 200MB。

问题是计算具有类型 1 或 2 记录的 ID 数量,以及具有类型 3 或 4 记录的 ID 数量。

我的代码:

虽然它给出了答案,但我认为它运行得有点慢。我应该怎么做才能让它运行得更快?

编辑: 文件中有重复的记录。而我只需要区分S1(类型1和类型2)和S2(类型3和类型4)。例如,1440927 1and1440927 2只计算一次,而不是两次,因为它们属于 S1。所以我必须存储ID。

0 投票
2 回答
1099 浏览

vb.net - 读取 MP3 帧头 - 将位值分配给变量

我正在学习visual basic .net,我正在尝试将一些java源代码转换为vb.net项目。项目读取mp3详细信息,然后根据frameheader详细信息等准确分割文件。

我的问题与阅读 mp3 文件的帧头有关。我了解帧详细信息包含在帧的前 4 个(32 位)字节中,某些位表示某些值,如下所述:http: //www.mp3-tech.org/programmer/frame_header.html

使用 FileStream 我已经能够读取这些数据并在文本框中以二进制形式显示它。

我正在寻求帮助来阅读这些位并将它们分配给我班级中的变量。我不确定执行此操作的正确程序是什么,因为某些值的长度为 1、2 或 4 位,例如位 19-20 = MpegType,位 12-15 = BitrateIndex,位 9 = 填充等。

我查看了 codeproject.com 上提供的类似项目,但我不明白他们是如何实现上述目标的。

任何帮助深表感谢。

编辑:

到目前为止,这是主要的子部分,我还没有包含声明变量和属性等的代码。

运行时,富文本框中的输出如下:

我想通读这些位并将适当的值分配给变量,例如

读取同步值的前 12 位。读取 mpegID 值的第 13 位。读取第 14 位和第 15 位以获取 layerID 值等。

希望这更清楚。

java代码如下:

0 投票
3 回答
7047 浏览

c# - BitArray 以错误的方式返回位?

这段代码:

给我以下输出:

不应该反过来吗?像这样:

我知道有小端和大端,尽管这些术语仅指字节的位置。据我所知,它们不会影响位。

0 投票
3 回答
1251 浏览

c - C位数组宏,谁能解释一下这些是如何工作的?

我正在尝试为学校项目实施 Erathostenes 筛,我决定使用位数组来实现。当我在搜索材料时,我遇到了这 3 个宏,它们完美地工作,但我无法真正阅读(理解)它们。

请您至少向我详细解释其中一个,我对 C 中的按位运算有非常基本的了解(基本上我知道它们“存在”)。

这是否适用于使用不同字节序的另一种架构?提前致谢。

0 投票
3 回答
2336 浏览

c# - 在c#中将二进制数据转换为字节

我们有一个包含二进制值的文本文件。比如说,我们有一个文件“file.txt”,它包含二进制数据,比如11001010 ,这个文件的大小是8 个字节。但是我们希望将这8 个字节作为位读取,即8 位,从而将 8 位转换为 1 个字节。我们该怎么做?我们只知道过程: 1.取一个缓冲区并将单个值读入缓冲区 2.如果缓冲区值达到8,则将这8位转换为一个字节并写入文件。

提前致谢。