问题标签 [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.
python - 打包成位图/位串的 Ascii 字节串返回到字符串?
我有一个打包的字符串,每个字符最初都是一个无符号字节,但存储为 7 位,然后打包到一个无符号字节数组中。我正在尝试找到一种在 Python 中解压缩此字符串的快速方法,但是我编写的使用 bitstring 模块的函数运行良好,但速度很慢。似乎这样的事情不应该那么慢,但我可能做得非常低效......
这看起来可能是微不足道的,但我只是不知道该使用什么,也许已经有一个函数可以解压字符串?
algorithm - 位串中的循环检测
给定一个长度为 N(<=10^5) 的二进制字符串,我想找到字符串循环的长度。循环的长度最多为 1000 且至少为 1。
例子:
110110110110 循环长度为3(模式重复为110)
000000 循环长度为1(模式重复为0)
1101101101 循环长度为3(模式重复为110)
我试图理解弗洛伊德的循环检测算法,但我无法理解如何应用这个问题。
我如何有效地解决这个问题?(我想要一个运行在 O(NlogN) 或更好的算法)。
python - 将位串(1 和 0 的字符串)转换为 numpy 数组
我有一个包含 1 列的熊猫数据框,其中包含一串位,例如。'100100101'
. 我想将此字符串转换为 numpy 数组。
我怎样才能做到这一点?
编辑:
使用
导致错误model.fit
:
由于标记的答案,我想出了适用于我的案例的解决方案:
python - 如何将 BitString 转换为 ctypes 字节数组?
我刚开始使用 BitString 和 ctypes,我有一个二进制文件的一部分存储在startdata
一个BitArray
类中。
现在,我必须将这些数据按原样传递给一个接受unsigned char *
as 参数的 C 函数,所以我首先尝试做这样的事情:
最后这样做:
这可行,但是如何将字节数据分配给startdata
我刚刚创建的数组/缓冲区?
这不起作用:
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)。
该程序应该能够接受以下输入:
python - 缓慢的按位运算
我正在开发一个 Python 库,该库对长位字符串执行大量按位运算,并且我想找到一种能够最大限度地提高其速度的位字符串类型。我已经尝试过内置的 Python int 类型、numpy、bitstring和bitarray,令人惊讶的是,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 个布尔值的列表或数组上逐个元素执行它基本相同。
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
我的问题是:我应该返回/公开哪种类型的数据/结构/方法,以使处理位更容易(或者至少对于前面描述的情况更容易)。
c - 如何在 Postgres 的 C 语言函数中返回位(n)或位变化(n)字段?
问题说明了一切;如何让 Postgres 的 C 语言函数返回位串?
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
吗?
erlang - 在 Erlang 中将位串转换为十进制
我正在尝试将位串解码为十进制值。例如,我有这些位串
<<96,64,112,153,9:4>>。我想将它们转换为十进制值,就像您将四位作为一个数字 (96(01100000) --> 60( 前四位是 6,接下来的四位是 0) , 64 --> 40 等等。输出将是 604070999。最后的 9:4 表示您认为 4 位来表示。
任何人都可以帮助执行此功能erlang。