class QBitArray#

QBitArray类提供了一个位数组。更多...

简介#

方法#

静态函数#

此文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对代码片段的翻译做出贡献。如果您发现翻译有问题,您也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单来让我们知道

详细说明#

警告

本节包含从 C++ 自动翻译到 Python 的代码片段,可能包含错误。

QBitArray 是一个数组,提供对单个位的访问,并提供操作符(ANDORXORNOT),这些操作符作用于整个位数组。它使用 隐式共享(写时复制)以减少内存使用并避免不必要的复制。

以下代码构建了一个包含 200 位并初始化为 false(0)的 QBitArray

ba = 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()

参见

QByteArray QList

__init__(other)#
参数:

otherQBitArray

构建other的副本。

此操作花费恒定时间,因为QBitArray隐式共享的。这使得从函数返回QBitArray非常快速。如果对共享实例进行修改,则会复制(写时复制),这需要线性时间

参见

operator=()

__init__()

构建一个空位(bit)数组。

参见

isEmpty()

__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 ]

参见

resize()

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 ]
static fromBits(data, len)#
参数:
  • data – str

  • len – int

返回类型::

QBitArray

使用位于 data 位置的密集位数组创建大小为 size 个位的 QBitArray。在 data 中的字节数组必须至少有 size / 8(向上取整)个字节长。

如果 size 不是8的倍数,则此函数将包括 data 的最后一个字节中的最低 size % 8 位。

参见

bits()

isEmpty()#
返回类型::

bool

如果此位数组的大小为0,则返回 true;否则返回 false。

参见

size()

isNull()#
返回类型::

bool

警告

本节包含从 C++ 自动翻译到 Python 的代码片段,可能包含错误。

如果此位数组为空,则返回 true;否则返回 false

示例

QBitArray().isNull() # returns true
QBitArray(0).isNull() # returns false
QBitArray(3).isNull() # returns false

Qt 区分 null 位数组和空位数组是出于历史原因。对于大多数应用程序,重要的是是否有位数组包含任何数据,这可以使用 isEmpty() 来确定。

参见

isEmpty()

__ne__(other)#
参数:

otherQBitArray

返回类型::

bool

如果 other 不等于此位数组,则返回 true;否则返回 false

参见

operator==()

__and__(a2)#
参数:

a2QBitArray

返回类型::

QBitArray

__iand__(arg__1)#
参数:

arg__1QBitArray

返回类型::

QBitArray

__eq__(other)#
参数:

otherQBitArray

返回类型::

bool

如果 other 与此位数组相等,则返回 true;否则返回 false

参见

运算符!=()

operator(i)#
参数:

i – int

返回类型::

bool

这是一个重载函数。

__xor__(a2)#
参数:

a2QBitArray

返回类型::

QBitArray

__ixor__(arg__1)#
参数:

arg__1QBitArray

返回类型::

QBitArray

__or__(a2)#
参数:

a2QBitArray

返回类型::

QBitArray

__ior__(arg__1)#
参数:

arg__1QBitArray

返回类型::

QBitArray

__invert__()#
返回类型::

QBitArray

警告

本节包含从 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 小于当前大小,位将从末尾移除。

参见

size()

setBit(i)#
参数:

i – int

将索引位置 i 的位设置为 1。

i 必须是位数组中的有效索引位置(即,0 <= i < size() )。

setBit(i, val)
参数:
  • i – int

  • val – bool

这是一个重载函数。

设置索引位置 i 的位为 value

size()#
返回类型::

int

返回存储在位数组中的位数。

参见

resize()

swap(other)#
参数:

otherQBitArray

与位数组 other 交换位数组。此操作非常快且从不失败。

testBit(i)#
参数:

i – int

返回类型::

bool

如果索引位置 i 的位是 1,则返回 true;否则返回 false

i 必须是位数组中的有效索引位置(即,0 <= i < size() )。

toUInt32(endianness[, ok=None])#
参数:
  • endiannessEndian

  • ok – bool

返回类型::

int

将位数组转换为整数。转换基于 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 超出数组的末尾,则不会发生任何操作。

参见

resize()