问题标签 [bitstring]

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 投票
1 回答
943 浏览

python - 打包成位图/位串的 Ascii 字节串返回到字符串?

我有一个打包的字符串,每个字符最初都是一个无符号字节,但存储为 7 位,然后打包到一个无符号字节数组中。我正在尝试找到一种在 Python 中解压缩此字符串的快速方法,但是我编写的使用 bitstring 模块的函数运行良好,但速度很慢。似乎这样的事情不应该那么慢,但我可能做得非常低效......

这看起来可能是微不足道的,但我只是不知道该使用什么,也许已经有一个函数可以解压字符串?

0 投票
4 回答
729 浏览

algorithm - 位串中的循环检测

给定一个长度为 N(<=10^5) 的二进制字符串,我想找到字符串循环的长度。循环的长度最多为 1000 且至少为 1

例子:

110110110110 循环长度为3(模式重复为110)

000000 循环长度为1(模式重复为0)

1101101101 循环长度为3(模式重复为110)

我试图理解弗洛伊德的循环检测算法,但我无法理解如何应用这个问题。

我如何有效地解决这个问题?(我想要一个运行在 O(NlogN) 或更好的算法)。

0 投票
3 回答
6848 浏览

python - 将位串(1 和 0 的字符串)转换为 numpy 数组

我有一个包含 1 列的熊猫数据框,其中包含一串位,例如。'100100101'. 我想将此字符串转换为 numpy 数组。

我怎样才能做到这一点?

编辑:

使用

导致错误model.fit

由于标记的答案,我想出了适用于我的案例的解决方案:

0 投票
1 回答
1399 浏览

python - 如何将 BitString 转换为 ctypes 字节数组?

我刚开始使用 BitString 和 ctypes,我有一个二进制文件的一部分存储在startdata一个BitArray类中。

现在,我必须将这些数据按原样传递给一个接受unsigned char *as 参数的 C 函数,所以我首先尝试做这样的事情:

最后这样做:

这可行,但是如何将字节数据分配给startdata我刚刚创建的数组/缓冲区?

这不起作用:

0 投票
2 回答
497 浏览

python - 如何使用 L/R SHIFT、L/R CIRC、AND、XOR 和 OR 有效地解析和评估位串表达式?

在课堂上,我们刚刚开始学习位串闪烁,从基本函数开始:LSHIFT、RSHIFT、LCIRC、RCIRC、AND、XOR、OR。然后,突然间,我们被赋予了编写一个 Python 程序来解析和评估位串表达式的任务。虽然我发现手动解决位串表达式相当简单,但我没有很好地掌握通过 python 解析和评估位串表达式的有效方法。我在下面定义了所有必需的函数,它们适用于单运算符表达式(即 LCIRC 4 0010),但到目前为止,我完全不知道如何解析多运算符表达式(即 LCIRC 3 LCIRC 3 0010)。

该程序应该能够接受以下输入:

0 投票
2 回答
6514 浏览

python - 缓慢的按位运算

我正在开发一个 Python 库,该库对长位字符串执行大量按位运算,并且我想找到一种能够最大限度地提高其速度的位字符串类型。我已经尝试过内置的 Python int 类型、numpy、bitstringbitarray,令人惊讶的是,Python int 在按位运算方面似乎更胜一筹。我用谷歌搜索的所有内容都说 numpy 对于像这样的矢量化操作应该更快。我是否以某种方式使用了 numpy 错误?是否有另一个我可以使用的 Python 库实际上改进了 Python 的内置 int 类型?

结果:

编辑:

关于 Python ints/longs 上的单个操作如何与整个 numpy 位数组上的向量操作相当,似乎有很多困惑。一个 10,000 位的 Python int/long 值,当被视为位掩码时(使用 & 运算符,就像我们可以在 C/C++ 中使用 ints 或 longs 一样)与长度为 10,000 的 numpy bool 数组直接可比,因为它们都包含相同数量的位,尽管以 2 种不同的方式表示。我尝试过的其他表示 10,000 位的方法也是如此,包括使用 numpy 压缩位数组、numpy int 数组和来自其他库的位数组/字符串类型。它们都是可比较的,因为它们都在相同的位序列上计算相同的函数。这里重要的是我可以表示所有 10,000 位,并且我可以对它们执行按位运算。

如果您仍然对 Python int/long 值如何存储与 numpy bool 数组或 numpy 二进制值 int 数组相同的信息感到困惑,请参考int_to_bits上面代码中的函数;它演示了如何从 Python int/long 中提取位,这表明在两个 10,000 位 int 上执行 & 操作与在 10,000 个布尔值的列表或数组上逐个元素执行它基本相同。

0 投票
0 回答
40 浏览

c++ - 读取位的 API 所需的建议

我发现了一个名为 python-bitstring 的精彩项目,我相信 C++ 端口在某些情况下会非常有用(在我的某些项目中肯定如此)。

在移植读/写/补丁字节方法时,我根本没有遇到任何问题;就像将 Python 翻译成 C++ 一样简单。

无论如何,现在我开始使用 bits 方法,但我不确定如何表达该功能。

例如,假设我想创建一个方法,如:

让我们假设,为了这个例子,那this->data是一块内存(void *)保存我正在读取的全部数据。

因此,该方法将接收要读取的位数和要跳过的可选位数。

这样我将读取从位置 2 到位置 6 的位(为了这个例子,忘记小/大端)。

我不能返回小于一个字节的任何东西(或者我可以吗?),所以即使我实际上读取了 5 位,我仍然会返回 8。但是如果我读取 14 位并跳过 1 会怎样?有没有其他方法可以以更有的方式只返回这些位?

我正在考虑一些常见的情况,例如:

  • 前 14 位是否匹配“010101.....”
  • 跳过 2 个匹配“00011010 .....”后执行接下来的 13 位
  • 读取前 5 位并将它们转换为 int/float
  • 跳过 5 位后读取 7 位并将它们转换为 int/float

我的问题是:我应该返回/公开哪种类型的数据/结构/方法,以使处理位更容易(或者至少对于前面描述的情况更容易)。

0 投票
1 回答
136 浏览

c - 如何在 Postgres 的 C 语言函数中返回位(n)或位变化(n)字段?

问题说明了一切;如何让 Postgres 的 C 语言函数返回位串?

0 投票
3 回答
78 浏览

python - 使用设置重新排列 for 循环的顺序

我正在使用具有以下结构/条目的数组(用于量子信息游戏中的硕士项目);第 1 列条目{0,1},第 2 列{0,1},第 3 列{0,2**(d-1)},最后列{0,d-1}。如下d=3

我正在使用以下函数来构建这个数组:

现在我想做的是轻松选择列中条目开始计数的顺序。(从右列到左上方。)

例如,说我喜欢从第 1 列开始计数,然后是第 3 列,然后是第 4 列,最后是第 2 列。for-loops我可以通过在函数中置换来得到这个:

这使:

在函数中排列 for 循环的顺序是可行的,但我必须编写 24 种不同的情况来涵盖所有排列。任何人都知道通常会更好solution/approach吗?

0 投票
1 回答
577 浏览

erlang - 在 Erlang 中将位串转换为十进制

我正在尝试将位串解码为十进制值。例如,我有这些位串

<<96,64,112,153,9:4>>。我想将它们转换为十进制值,就像您将四位作为一个数字 (96(01100000) --> 60( 前四位是 6,接下来的四位是 0) , 64 --> 40 等等。输出将是 604070999。最后的 9:4 表示您认为 4 位来表示。

任何人都可以帮助执行此功能erlang。