- 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)的
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
构建
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
超出数组的末尾,则不会发生任何操作。参见