- class QBitArray#
-
简介#
方法#
def
__init__()def
__getitem__()def
__len__()def
__setitem__()def
at()def
bits()def
clear()def
clearBit()def
count()def
fill()def
isEmpty()def
isNull()定义
__ne__()定义
__and__()定义
__iand__()定义
__eq__()定义
operator[]()定义
__xor__()定义
__ixor__()定义
__or__()定义
__ior__()定义
__invert__()定义
resize()定义
setBit()定义
size()定义
swap()定义
testBit()定义
toUInt32()定义
toggleBit()定义
truncate()
静态函数#
定义
fromBits()
注
此文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对代码片段的翻译做出贡献。如果您发现翻译有问题,您也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单来让我们知道
详细说明#
警告
本节包含从 C++ 自动翻译到 Python 的代码片段,可能包含错误。
QBitArray是一个数组,提供对单个位的访问,并提供操作符(AND、OR、XOR和NOT),这些操作符作用于整个位数组。它使用 隐式共享(写时复制)以减少内存使用并避免不必要的复制。以下代码构建了一个包含 200 位并初始化为 false(0)的
QBitArrayba = QBitArray(200)
要将位初始化为真,要么在构造函数中传递
true作为第二个参数,要么稍后在调用fill()QBitArray使用基于 0 的索引,就像 C++ 数组一样。要访问特定索引位置的位,可以使用操作符operator[](%)。在非常数位数组中,操作符operator[](%)返回对位的引用,可以在赋值语句的左侧使用。例如ba = QBitArray() ba.resize(3) ba[0] = True ba[1] = False ba[2] = True
由于技术原因,使用
testBit()和setBit()访问数组中的位比使用操作符operator[](%)更高效。例如ba = QBitArray(3) ba.setBit(0, True) ba.setBit(1, False) ba.setBit(2, True)
QBitArray支持操作符&(AND)、|(OR)、^(XOR)、~(NOT),以及&=、|=、和^=。这些操作符与其同名内置 C++ 位操作符的工作方式相同。例如x = QBitArray(5) x.setBit(3, True) # x: [ 0, 0, 0, 1, 0 ] y = QBitArray(5) y.setBit(4, True) # y: [ 0, 0, 0, 0, 1 ] x |= y # x: [ 0, 0, 0, 1, 1 ]
由于历史原因,
QBitArray会在空位数组和空位数组之间进行区分。空null位数组是使用QBitArray的默认构造函数初始化的位数组。任何大小为 0 的位数组都是空位数组。空位数组始终是空的,但空位数组不一定是空的。QBitArray().isNull() # returns true QBitArray().isEmpty() # returns true QBitArray(0).isNull() # returns false QBitArray(0).isEmpty() # returns true QBitArray(3).isNull() # returns false QBitArray(3).isEmpty() # returns false
除了
isNull()外,所有函数都将null位(bit)数组视为空位(bit)数组;例如,QBitArray()等于QBitArray(0)。我们建议您始终使用isEmpty()并避免使用isNull()。参见
QByteArrayQList构建
other的副本。此操作花费恒定时间,因为
QBitArray是隐式共享的。这使得从函数返回 QBitArray非常快速。如果对共享实例进行修改,则会复制(写时复制),这需要线性时间 。参见
operator=()- __init__()
构建一个空位(bit)数组。
参见
- __init__(size[, val=false])
- 参数:
size – int
val – bool
构建一个包含
size位的位(bit)数组。位(bit)会使用value初始化,默认为false(0)。- __getitem__()#
- __len__()#
- __setitem__()#
- at(i)#
- 参数:
i – int
- 返回类型::
bool
返回索引位置
i上位的值。i必须是位数组中的有效索引位置(即,0 <=i<size())。参见
operator[]()- bits()#
- 返回类型::
str
返回此
QBitArray的密集位数组的指针。从每个字节中的最低有效位开始向上计算位。最后字节中相关的位数由size() % 8给出。参见
- clear()#
清除位数组的全部内容,使其变为空。
- clearBit(i)#
- 参数:
i – int
将索引位置
i的位设置为 0。i必须是位数组中的有效索引位置(即,0 <=i<size())。- count()#
- 返回类型::
int
等同于
size().- count(on)
- 参数:
on – bool
- 返回类型::
int
如果
on为真,此函数返回位数组中存储的 1-bit 数量;否则返回 0-bit 的数量。- fill(aval[, asize=-1])#
- 参数:
aval – bool
asize – int
- 返回类型::
bool
警告
本节包含从 C++ 自动翻译到 Python 的代码片段,可能包含错误。
将位数组中的每个位设置为
value,成功时返回 true;否则返回false。如果size与 -1(默认值)不同,则在此之前将位数组调整到size。示例
ba = QBitArray(8) ba.fill(True) # ba: [ 1, 1, 1, 1, 1, 1, 1, 1 ] ba.fill(False, 2) # ba: [ 0, 0 ]
参见
- fill(val, first, last)
- 参数:
val – bool
first – int
last – int
警告
本节包含从 C++ 自动翻译到 Python 的代码片段,可能包含错误。
这是一个重载函数。
将索引位置从
begin到(不包括)end的位设置为value。begin必须是位数组中的一个有效索引位置(0 <=begin<size())。end必须是一个有效索引位置或等于size(),在这种情况下,填充操作将运行到数组的末尾(0 <=end<=size())。示例
ba = QBitArray(4) ba.fill(True, 1, 2) # ba: [ 0, 1, 0, 0 ] ba.fill(True, 1, 3) # ba: [ 0, 1, 1, 0 ] ba.fill(True, 1, 4) # ba: [ 0, 1, 1, 1 ]
使用位于
data位置的密集位数组创建大小为size个位的QBitArray。在data中的字节数组必须至少有size/ 8(向上取整)个字节长。如果
size不是8的倍数,则此函数将包括data的最后一个字节中的最低size% 8 位。参见
- isEmpty()#
- 返回类型::
bool
如果此位数组的大小为0,则返回
true;否则返回 false。参见
- isNull()#
- 返回类型::
bool
警告
本节包含从 C++ 自动翻译到 Python 的代码片段,可能包含错误。
如果此位数组为空,则返回
true;否则返回false。示例
QBitArray().isNull() # returns true QBitArray(0).isNull() # returns false QBitArray(3).isNull() # returns false
Qt 区分 null 位数组和空位数组是出于历史原因。对于大多数应用程序,重要的是是否有位数组包含任何数据,这可以使用
isEmpty()来确定。参见
如果
other不等于此位数组,则返回true;否则返回false。参见
operator==()如果
other与此位数组相等,则返回true;否则返回false。参见
运算符!=()- operator(i)#
- 参数:
i – int
- 返回类型::
bool
这是一个重载函数。
警告
本节包含从 C++ 自动翻译到 Python 的代码片段,可能包含错误。
返回一个包含位数组
a取反位的结果。示例
a = QBitArray(3) b = QBitArray() a[0] = 1 a[1] = 0; a[2] = 1; # a: [ 1, 0, 1 ] b = ~a # b: [ 0, 1, 0 ]
参见
operator&()operator|()operator^()- resize(size)#
- 参数:
size – int
将位数组调整大小为
size位。如果
size大于当前大小,位数组将扩展以使其变为size位,额外的位添加到末尾。新位将被初始化为 false (0)。如果
size小于当前大小,位将从末尾移除。参见
- setBit(i)#
- 参数:
i – int
将索引位置
i的位设置为 1。i必须是位数组中的有效索引位置(即,0 <=i<size())。- setBit(i, val)
- 参数:
i – int
val – bool
这是一个重载函数。
设置索引位置
i的位为value。- size()#
- 返回类型::
int
返回存储在位数组中的位数。
参见
与位数组
other交换位数组。此操作非常快且从不失败。- testBit(i)#
- 参数:
i – int
- 返回类型::
bool
如果索引位置
i的位是 1,则返回true;否则返回false。i必须是位数组中的有效索引位置(即,0 <=i<size())。将位数组转换为整数。转换基于
endianness。将数组的前 32 位转换为quint32并返回它,遵守endianness。如果ok不是一个空指针,并且数组超过 32 位,则将ok设置为 false 并此函数返回零;否则,设置为 true。- toggleBit(i)#
- 参数:
i – int
- 返回类型::
bool
反转索引位置
i的位的值,返回该位之前的值(如果设置为 true,则为第一个值或 if 未设置,则为 false)。如果之前的值是 0,则新值将是 1。如果之前的值是 1,则新值将是 0。
i必须是位数组中的有效索引位置(即,0 <=i<size())。- truncate(pos)#
- 参数:
pos – int
在索引位置
pos截断位数组。如果
pos超出数组的末尾,则不会发生任何操作。参见