PySide6.QtCore.QBitArray

class QBitArray

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

概要

方法

静态函数

注意

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

详细描述

警告

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

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

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

ba = QBitArray(200)

要将位初始化为 true,可以将 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 区分了空位数组和空位数组。一个位数组是使用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()之外的所有函数都将空的位数组视为与空的位数组相同;例如,QBitArray()QBitArray (0)相等。我们建议您始终使用isEmpty()并避免使用isNull()

另请参阅

QByteArray QList

__init__()

构造一个空的位数组。

另请参阅

isEmpty()

__init__(other)
Parameters:

其他QBitArray

构造other的副本。

此操作需要常数时间,因为QBitArray隐式共享的。这使得从函数返回QBitArray非常快。如果共享实例被修改,它将被复制(写时复制),这需要线性时间

另请参阅

operator=()

__init__(size[, val=false])
Parameters:
  • size – int

  • val – 布尔值

构造一个包含size位的位数组。这些位用value初始化,默认值为false(0)。

__getitem__()
__len__()
__setitem__()
at(i)
Parameters:

i – 整数

Return type:

布尔

返回索引位置 i 处的位的值。

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

另请参阅

operator[]()

bits()
Return type:

字符串

返回一个指向此QBitArray的密集位数组的指针。位从每个字节的最低有效位向上计数。最后一个字节中相关的位数由size() % 8给出。

另请参阅

fromBits() size()

clear()

清除位数组的内容并使其为空。

另请参阅

resize() isEmpty()

clearBit(i)
Parameters:

i – 整数

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

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

另请参阅

setBit() toggleBit()

count()
Return type:

整数

size() 相同。

count(on)
Parameters:

on – 布尔值

Return type:

整数

如果 on 为真,此函数返回存储在位数组中的1位数;否则返回0位数。

fill(aval[, asize=-1])
Parameters:
  • aval – 布尔值

  • asize – int

Return type:

布尔

警告

本节包含从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)
Parameters:
  • val – 布尔值

  • 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)
Parameters:
  • data – 字符串

  • len – int

Return type:

QBitArray

创建一个QBitArray,其密集位数组位于data,具有size位。data处的字节数组必须至少为size / 8(向上取整)字节长。

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

另请参阅

bits()

isEmpty()
Return type:

布尔

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

另请参阅

size()

isNull()
Return type:

布尔

警告

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

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

示例:

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

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

另请参阅

isEmpty()

__ne__(rhs)
Parameters:

rhsQBitArray

Return type:

布尔

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

另请参阅

operator==()

__and__(a2)
Parameters:

a2QBitArray

Return type:

QBitArray

__iand__(other)
Parameters:

其他QBitArray

Return type:

QBitArray

__eq__(rhs)
Parameters:

rhsQBitArray

Return type:

布尔

如果 lhs 等于 rhs 位数组,则返回 true;否则返回 false

另请参阅

operator!=()

operator(i)
Parameters:

i – 整数

Return type:

布尔

这是一个重载函数。

__xor__(a2)
Parameters:

a2QBitArray

Return type:

QBitArray

__ixor__(other)
Parameters:

其他QBitArray

Return type:

QBitArray

__or__(a2)
Parameters:

a2QBitArray

Return type:

QBitArray

__ior__(other)
Parameters:

其他QBitArray

Return type:

QBitArray

__invert__()
Return type:

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)
Parameters:

size – int

将位数组调整为size位。

如果size大于当前大小,位数组将被扩展,使其达到size位,额外的位将添加到末尾。新位初始化为false(0)。

如果 size 小于当前大小,则从末尾移除位。

另请参阅

size()

setBit(i)
Parameters:

i – 整数

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

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

另请参阅

clearBit() toggleBit()

setBit(i, val)
Parameters:
  • i – 整数

  • val – 布尔值

这是一个重载函数。

将索引位置 i 的位设置为 value

size()
Return type:

整数

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

另请参阅

resize()

swap(other)
Parameters:

其他QBitArray

将位数组 other 与此位数组交换。此操作非常快速且永远不会失败。

testBit(i)
Parameters:

i – 整数

Return type:

布尔

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

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

另请参阅

setBit() clearBit()

toUInt32(endianness[, ok=None])
Parameters:
  • 字节序Endian

  • ok – 布尔值

Return type:

整数

返回将位数组转换为整数的结果。转换基于endianness。将数组的前32位转换为quint32并返回,遵循endianness。如果ok不是空指针,并且数组超过32位,ok将被设置为false,并且此函数返回零;否则,它将被设置为true。

toggleBit(i)
Parameters:

i – 整数

Return type:

布尔

反转索引位置 i 处的位的值,返回该位之前的值,如果该位被设置则返回 true,如果未被设置则返回 false。

如果前一个值是0,新值将是1。如果前一个值是1,新值将是0。

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

另请参阅

setBit() clearBit()

truncate(pos)
Parameters:

pos – 整数

在索引位置 pos 处截断位数组。

如果 pos 超出数组的末尾,则不会发生任何操作。

另请参阅

resize()