QByteArray Class Reference

[QtCore module]

The QByteArray class provides an array of bytes. More…

Methods

  • __init__ (self)
  • __init__ (self, int size, str c)
  • __init__ (self, QByteArray a)
  • QByteArray append (self, QByteArray a)
  • QByteArray append (self, QString s)
  • str at (self, int i)
  • int capacity (self)
  • chop (self, int n)
  • clear (self)
  • bool contains (self, QByteArray a)
  • int count (self, QByteArray a)
  • int count (self)
  • str data (self)
  • bool endsWith (self, QByteArray a)
  • QByteArray fill (self, str ch, int size = -1)
  • int indexOf (self, QByteArray ba, int from = 0)
  • int indexOf (self, QString str, int from = 0)
  • QByteArray insert (self, int i, QByteArray a)
  • QByteArray insert (self, int i, QString s)
  • bool isEmpty (self)
  • bool isNull (self)
  • int lastIndexOf (self, QByteArray ba, int from = -1)
  • int lastIndexOf (self, QString str, int from = -1)
  • QByteArray left (self, int len)
  • QByteArray leftJustified (self, int width, str fill = ' ', bool truncate = False)
  • int length (self)
  • QByteArray mid (self, int pos, int length = -1)
  • QByteArray prepend (self, QByteArray a)
  • push_back (self, QByteArray a)
  • push_front (self, QByteArray a)
  • QByteArray remove (self, int index, int len)
  • QByteArray repeated (self, int times)
  • QByteArray replace (self, int index, int len, QByteArray s)
  • QByteArray replace (self, QByteArray before, QByteArray after)
  • QByteArray replace (self, QString before, QByteArray after)
  • reserve (self, int size)
  • resize (self, int size)
  • QByteArray right (self, int len)
  • QByteArray rightJustified (self, int width, str fill = ' ', bool truncate = False)
  • QByteArray setNum (self, int n, int base = 10)
  • QByteArray setNum (self, float n, str format = 'g', int precision = 6)
  • QByteArray setNum (self, int n, int base = 10)
  • QByteArray setNum (self, int n, int base = 10)
  • QByteArray simplified (self)
  • int size (self)
  • list-of-QByteArray split (self, str sep)
  • squeeze (self)
  • bool startsWith (self, QByteArray a)
  • swap (self, QByteArray other)
  • QByteArray toBase64 (self)
  • (float, bool ok) toDouble (self)
  • (float, bool ok) toFloat (self)
  • QByteArray toHex (self)
  • (int, bool ok) toInt (self, int base = 10)
  • (int, bool ok) toLong (self, int base = 10)
  • (int, bool ok) toLongLong (self, int base = 10)
  • QByteArray toLower (self)
  • QByteArray toPercentEncoding (self, QByteArray exclude = QByteArray(), QByteArray include = QByteArray(), str percent = '%')
  • (int, bool ok) toShort (self, int base = 10)
  • (int, bool ok) toUInt (self, int base = 10)
  • (int, bool ok) toULong (self, int base = 10)
  • (int, bool ok) toULongLong (self, int base = 10)
  • QByteArray toUpper (self)
  • (int, bool ok) toUShort (self, int base = 10)
  • QByteArray trimmed (self)
  • truncate (self, int pos)

Static Methods

  • QByteArray fromBase64 (QByteArray base64)
  • QByteArray fromHex (QByteArray hexEncoded)
  • QByteArray fromPercentEncoding (QByteArray input, str percent = '%')
  • QByteArray fromRawData (str)
  • QByteArray number (int n, int base = 10)
  • QByteArray number (float n, str format = 'g', int precision = 6)
  • QByteArray number (int n, int base = 10)
  • QByteArray number (int n, int base = 10)

Special Methods

  • QByteArray __add__ (self, QByteArray a2)
  • QString __add__ (self, QString s)
  • int __contains__ (self, QByteArray a)
  • bool __eq__ (self, QString s2)
  • bool __eq__ (self, QByteArray a2)
  • bool __ge__ (self, QString s2)
  • bool __ge__ (self, QByteArray a2)
  • str __getitem__ (self, int i)
  • QByteArray __getitem__ (self, slice slice)
  • bool __gt__ (self, QString s2)
  • bool __gt__ (self, QByteArray a2)
  • int __hash__ (self)
  • QByteArray __iadd__ (self, QByteArray a)
  • QByteArray __iadd__ (self, QString s)
  • QByteArray __imul__ (self, int m)
  • bool __le__ (self, QString s2)
  • bool __le__ (self, QByteArray a2)
  • __len__ (self)
  • bool __lt__ (self, QString s2)
  • bool __lt__ (self, QByteArray a2)
  • QByteArray __mul__ (self, int m)
  • bool __ne__ (self, QString s2)
  • bool __ne__ (self, QByteArray a2)
  • str __repr__ (self)
  • str __str__ (self)

Detailed Description

这个类可以醃制。

可以使用Python的字符串对象,每当一个QByteArray预计。

该QByteArray中的类提供了一个字节数组。

QByteArray中可以用来存储原始字节(包括’\ 0的)和传统的8位’\ 0’结尾的字符串。使用QByteArray中远远比使用更方便const char *。在幕后,它始终确保数据后跟一个’\ 0 ‘终止和用途implicit sharing(复制上写的),以减少内存使用量,避免数据的不必要的复制。

除了QByteArray中, Qt还提供了QString类存储字符串数据。对于大多数用途,QString是您要使用的类。它存储16位的Unicode字符,使得它易于保存non-ASCII/non-Latin-1字符在你的应用程序。此外,QString用于整个Qt的API中。两个主要的情况下, QByteArray中是合适的,当你需要存储原始二进制数据,而当内存保护是至关重要的(例如,用Qt嵌入式Linux的) 。

初始化一个QByteArray中的一种方法是简单地传递一个const char *它的构造函数。例如,下面的代码创建一个包含数据的“Hello ” 5大小的字节数组:

  1. QByteArray ba("Hello");

虽然size( ) 5 ,字节数组也是在年底维持一个额外的’\ 0 ‘字符,这样,如果一个函数使用的要求一个指向基础数据(如调用data( ) ) ,指向的数据保证是’\ 0’结尾的。

QByteArray中做的一个深层副本const char *数据,所以你可以在以后修改它没有遇到的副作用。 (如果由于性能原因你不希望采取的字符数据,使用深拷贝QByteArray.fromRawData( )来代替。 )

另一种方法是利用设置在阵列的大小resize()和初始化每字节的数据字节。 QByteArray中使用基于0的索引,就像C + +中的数组。要访问在特定索引位置的字节,你可以使用operator [] ( ) 。对非const字节数组,操作符[ ] ( )返回一个引用,可以在赋值的左侧使用一个字节。例如:

  1. QByteArray ba;
  2. ba.resize(5);
  3. ba[0] = 0x3c;
  4. ba[1] = 0xb8;
  5. ba[2] = 0x64;
  6. ba[3] = 0x18;
  7. ba[4] = 0xca;

对于只读访问,另一种语法是使用at():

  1. for (int i = 0; i < ba.size(); ++i) {
  2. if (ba.at(i) >= 'a' && ba.at(i) <= 'f')
  3. cout << "Found character in range [a-f]" << endl;
  4. }

at( )可以比的operator [ ] ( )快,因为它不会导致一个deep copy发生。

要一次提取多少字节,使用left( )right() ,或mid( ) 。

一个QByteArray中可以嵌入’\ 0 ‘字节。该size( )函数总是返回整个数组,包括嵌入式’\ 0’的字节大小。如果你想获得的数据备份到不包括第一个’ \ 0 ‘字符,通话时长qstrlen( )的字节数组。

调用后resize( ) ,新分配的字节都未定义的值。要设置所有字节到一个特定的值,调用fill( ) 。

为了获得一个指向实际的字符数据,调用data()或constData( ) 。这些函数返回一个指针,该数据的开头。指针是保证仍然有效,直到一个非const函数被调用的QByteArray中。它也保证了数据与’\ 0’字节结束,除非QByteArray中是从创建raw data。这个’\ 0’字节由QByteArray中自动地提供,并以不计数size( ) 。

QByteArray中提供了修饰的字节数据的以下基本功能:append( )prepend( )insert( )replace()和remove( ) 。例如:

  1. QByteArray x("and");
  2. x.prepend("rock "); // x == "rock and"
  3. x.append(" roll"); // x == "rock and roll"
  4. x.replace(5, 3, "&"); // x == "rock & roll"

replace()和remove( )函数的前两个参数是要开始擦除,并应被删除的字节数的位置。

当你append()的数据到一个非空数组,该数组将被重新分配和新的数据复制到它。您可以通过调用避免这种行为reserve(),它预先分配一定数量的内存。您也可以拨打capacity( )来找出QByteArray中实际上有多少内存分配。追加到一个空数组数据不被复制。

一个常见的要求是从一个字节数组(的’\ n ‘,’ \ T’ ,’’,等等)删除空白字符。如果你想从一个QByteArray中的两端删除空白,使用trimmed( ) 。如果你想从两端删除空白,并与字节数组中的单个空格字符替换多个连续的空格,使用simplified( ) 。

如果你想找到一个特定的字符或子串中所有出现在一个QByteArray中,使用indexOf()或lastIndexOf( ) 。前者向前搜索从给定的索引位置,后者向后搜索开始。都返回字符或字符串的索引位置,如果他们找到它,否则,它们将返回-1 。例如,下面是一个典型的循环,找到一个特定的子字符串的所有匹配:

  1. QByteArray ba("We must be <b>bold</b>, very <b>bold</b>");
  2. int j = 0;
  3. while ((j = ba.indexOf("<b>", j)) != -1) {
  4. cout << "Found <b> tag at index position " << j << endl;
  5. ++j;
  6. }

如果你只是想检查一个QByteArray中是否包含特定的字符或子串,使用contains( ) 。如果你想了解有多少次一个特定的字符或子发生在字节数组中,使用count( ) 。如果你想更换另一特定值的所有匹配,使用这两个参数中的一个replace( )重载。

QByteArrays可以使用重载运算符,如操作符\u003c ( ) ,操作符\u003c = ( ) ,运算符== ( )操作符\u003e = ( ) ,等进行比较。比较是完全基于字符的数值,是非常快的,但不是什么人期望的那样。QString.localeAwareCompare( )是用于排序用户界面字符串一个更好的选择。

由于历史原因, QByteArray中一个空字节数组和一个空字节数组之间的区别。一null字节数组是使用QByteArray中的默认构造函数初始化或通过传递(为const char * )0给构造函数的字节数组。一个empty字节数组是任何字节数组大小为0 。一个空字节数组始终是空的,但一个空字节数组不一定空:

  1. QByteArray().isNull(); // returns true
  2. QByteArray().isEmpty(); // returns true
  3. QByteArray("").isNull(); // returns false
  4. QByteArray("").isEmpty(); // returns true
  5. QByteArray("abc").isNull(); // returns false
  6. QByteArray("abc").isEmpty(); // returns false

之外的全部功能isNull( )把空字节数组一样的空字节数组。例如,data( )返回一个指向一个’\ 0 ‘字符为一个空字节数组(not一个空指针) ,和QByteArray( )比较等于QByteArray中( “”) 。我们建议您始终使用isEmpty()和避免isNull( ) 。

Notes on Locale

Number-String Conversions

该数值数据类型和字符串之间进行转换函数在C语言环境进行,而不管用户的区域设置。使用QString以数字和字符串之间进行区域设置的格式转换。

8-bit Character Comparisons

在QByteArray中,其性格和大写和小写的概念是大于或小于另一个特点是与当前位置有关。这会影响支持不区分大小写的选项或比较或小写或大写的参数的函数。不区分大小写的操作和比较将是准确的,如果两个字符串只包含ASCII字符。 (如果$LC_CTYPE设置,大多数Unix系统做“正确的事” 。 )功能,这会影响包括:contains( )indexOf( )lastIndexOf( )操作符\u003c ( ) ,操作符\u003c = ( ) ,操作者\u003e ( ) ,运算符\u003e = ( ) ,toLower()和toUpper( ) 。

这个问题并不适用于将QString因为它们代表使用Unicode字符。


Method Documentation

  1. QByteArray.__init__ (self)

构造一个空字节数组。

See also isEmpty( ) 。

  1. QByteArray.__init__ (self, int size, str c)

构造一个字符串初始化一个字节数组str

QByteArray使得字符串数据的深层副本。

  1. QByteArray.__init__ (self, QByteArray a)

构造一个包含第一个字节数组size数组的字节data

If data是0 ,一个空字节数组构造。

QByteArray使得字符串数据的深层副本。

See also fromRawData( ) 。

  1. QByteArray QByteArray.append (self, QByteArray a)

[

附加的字节数组ba到这个字节数组的末尾。

例如:

]($docs-qbytearray.html)

  1. QByteArray x("free");
  2. [QByteArray]($docs-qbytearray.html) y("dom");
  3. x.append(y);
  4. // x == "freedom"

这是相同的插入物(size( )ba) 。

注意:QByteArrayimplicitly shared类。因此,如果this是一个空QByteArray,然后this只是在共享中的数据ba。在这种情况下,不复制数据的操作后,取constant time。如果共享的实例被改性时,其将被复制(复制写入时) ,取linear time

If this是不是空QByteArray,数据的深层副本中进行,取linear time

此操作通常不会从分配开销受到影响,因为QByteArray预先分配额外的空间,在数据的末尾,这样它可以生长而不重新分配为每个附加的操作。

See also operator+=( )prepend()和insert( ) 。

  1. QByteArray QByteArray.append (self, QString s)

[

这是一个重载函数。

]($docs-qbytearray.html)

附加字符串str这个字节数组。在Unicode数据使用转换为8位字符QString.toAscii( ) 。

如果QString包含非ASCII Unicode字符,使用此功能可能会导致信息丢失。您可以通过定义关闭此功能QT_NO_CAST_TO_ASCII当您编译您的应用程序。然后,您需要调用QString.toAscii( )(或QString.toLatin1()或QString.toUtf8()或QString.toLocal8Bit( ) )明确,如果你想将数据转换为const char *

  1. str QByteArray.at (self, int i)

返回字符的索引位置i在字节数组。

i必须是字节数组中的一个有效的索引位置(即0 \u003c =i\u003csize())。

See also operator[]( ) 。

  1. int QByteArray.capacity (self)

返回一个可存储在字节数组中,而不必强制重新分配的最大字节数。

此函数的唯一目的是提供微调的手段QByteArray的内存使用情况。一般情况下,你很少会需要调用这个函数。如果你想知道有多少字节在字节数组,调用size( ) 。

See also reserve()和squeeze( ) 。

  1. QByteArray.chop (self, int n)

移除n从字节数组的末尾字节。

If n大于size( ) ,结果是一个空字节数组。

例如:

  1. [QByteArray]($docs-qbytearray.html) ba("STARTTLS\r\n");
  2. ba.chop(2); // ba == "STARTTLS"

See also truncate( )resize()和left( ) 。

  1. QByteArray.clear (self)

清除字节数组的内容,使得它为空。

See also resize()和isEmpty( ) 。

  1. bool QByteArray.contains (self, QByteArray a)

如果字节数组包含字节数组的出现,则返回Trueba否则返回False 。

See also indexOf()和count( ) 。

  1. int QByteArray.count (self, QByteArray a)

返回(可能重叠)出现字节数组数ba在这个字节数组。

See also contains()和indexOf( ) 。

  1. int QByteArray.count (self)

这是一个重载函数。

返回(可能重叠的)串出现的次数str在字节数组。

  1. str QByteArray.data (self)

返回一个指针,指向存储在字节数组中的数据。该指针可用于访问和修改构成该阵列的字节数。的数据是’\ 0’终止,即字节在返回的字符串的数目是size( ) + 1的’ \ 0 ‘终止。

例如:

  1. [QByteArray]($docs-qbytearray.html) ba("Hello world");
  2. char *data = ba.data();
  3. while (*data) {
  4. cout << "[" << *data << "]" << endl;
  5. ++data;
  6. }

指针仍然有效,只要将字节数组是不是重新分配或销毁。对于只读访问,constData( )快,因为它不会导致一个deep copy发生。

这个函数只是有用的一个字节数组传递给一个接受一个函数const char *

下面的示例使字符*由数据()返回的副本,但它会破坏堆并导致崩溃,因为它没有在最后分配的’ \ 0 ‘一个字节:

  1. [QString]($docs-qstring.html) tmp = "test";
  2. [QByteArray]($docs-qbytearray.html) text = tmp.toLocal8Bit();
  3. char *data = new char[text.size()]
  4. strcpy(data, text.data());
  5. delete [] data;

这个分配的正确的空间量:

  1. [QString]($docs-qstring.html) tmp = "test";
  2. [QByteArray]($docs-qbytearray.html) text = tmp.toLocal8Bit();
  3. char *data = new char[text.size() + 1]
  4. strcpy(data, text.data());
  5. delete [] data;

注意:QByteArray可以存储任何字节值包括’\ 0的,但大部分的功能,采取char *参数假设数据在第一个’\ 0 ‘,他们遇到的结束。

See also constData()和operator[]( ) 。

  1. bool QByteArray.endsWith (self, QByteArray a)

如果该字节数组byte数组结尾,则返回Trueba否则返回False 。

例如:

  1. [QByteArray]($docs-qbytearray.html) url("http://qt.nokia.com/index.html");
  2. if (url.endsWith(".html"))
  3. ...

See also startsWith()和right( ) 。

  1. QByteArray QByteArray.fill (self, str ch, int size = -1)

[

设置每个字节的字节数组字符ch。如果size是从-1 (默认值)不同,字节数组大小调整大小size事前。

例如:

]($docs-qbytearray.html)

  1. QByteArray ba("Istambul");
  2. ba.fill('o');
  3. // ba == "oooooooo"
  4. ba.fill('X', 2);
  5. // ba == "XX"

See also resize( ) 。

  1. QByteArray QByteArray.fromBase64 (QByteArray base64)

[

返回Base64数组的一个副本解码base64。输入不进行有效性检查,在输入无效字符被跳过,使解码过程继续进行后续字符。

例如:

]($docs-qbytearray.html)

  1. QByteArray text = [QByteArray]($docs-qbytearray.html).fromBase64("UXQgaXMgZ3JlYXQh");
  2. text.data(); // returns "Qt is great!"

用于解码Base64编码数据的算法中所定义RFC 2045

See also toBase64( ) 。

  1. QByteArray QByteArray.fromHex (QByteArray hexEncoded)

[

返回十六进制编码数组的副本解码hexEncoded。输入不进行有效性检查,在输入无效字符被跳过,使解码过程继续进行后续字符。

例如:

]($docs-qbytearray.html)

  1. QByteArray text = [QByteArray]($docs-qbytearray.html).fromHex("517420697320677265617421");
  2. text.data(); // returns "Qt is great!"

See also toHex( ) 。

  1. QByteArray QByteArray.fromPercentEncoding (QByteArray input, str percent = '%')

返回的URI / URL样式的百分比编码解码副本input。该percent参数允许你替换“%”字符为另一个(例如, ‘_‘或’ =’) 。

例如:

  1. [QByteArray]($docs-qbytearray.html) text = [QByteArray]($docs-qbytearray.html).fromPercentEncoding("Qt%20is%20great%33");
  2. text.data(); // returns "Qt is great!"

此功能被引入Qt的4.4 。

See also toPercentEncoding()和QUrl.fromPercentEncoding( ) 。

  1. QByteArray QByteArray.fromRawData (str)

构造一个QByteArray使用该第一size的字节data数组。该字节not复制。该QByteArray将包含data指针。调用者保证data也不会被删除或修改,只要这QByteArray并且没有被修改的任何拷贝存在。换言之,因为QByteArrayimplicitly shared类,并通过这个函数返回的实例包含data指针,调用者不得删除data或直接修改它只要返回QByteArray和任何副本存在。但是,QByteArray不采取所有权data的,所以QByteArray析构函数永远不会删除原data时,即使最后QByteArraydata被破坏。

随后试图修改返回的内容QByteArray或者从它所做的任何拷贝将导致其创建的一个深层副本data在做修改前的数组。这确保了生data数组本身将永远不会被修改QByteArray

下面是如何使用一个读取数据的例子QDataStream在内存中的原始数据,而无需对原始数据复制到一个QByteArray

  1. static const char mydata[] = {
  2. 0x00, 0x00, 0x03, 0x84, 0x78, 0x9c, 0x3b, 0x76,
  3. 0xec, 0x18, 0xc3, 0x31, 0x0a, 0xf1, 0xcc, 0x99,
  4. ...
  5. 0x6d, 0x5b
  6. };
  7. [QByteArray]($docs-qbytearray.html) data = [QByteArray]($docs-qbytearray.html).fromRawData(mydata, sizeof(mydata));
  8. [QDataStream]($docs-qdatastream.html) in(&data, [QIODevice](qiodevice.html).ReadOnly);
  9. ...

Warning:)与fromRawData (创建的字节数组是not_null结尾,除非原始数据包含0字符位置_size。虽然这不要紧,QDataStream或相似的功能indexOf( ) ,传递字节数组的函数接受一个const char *预期为’\ 0’末端都将失败。

See also setRawData( )data()和constData( ) 。

  1. int QByteArray.indexOf (self, QByteArray ba, int from = 0)

返回字节数组中第一次出现的索引位置ba在这个字节数组,向前搜索的索引位置from。返回-1,如果ba找不到。

例如:

  1. [QByteArray]($docs-qbytearray.html) x("sticky question");
  2. [QByteArray]($docs-qbytearray.html) y("sti");
  3. x.indexOf(y); // returns 0
  4. x.indexOf(y, 1); // returns 10
  5. x.indexOf(y, 10); // returns 10
  6. x.indexOf(y, 11); // returns -1

See also lastIndexOf( )contains()和count( ) 。

  1. int QByteArray.indexOf (self, QString str, int from = 0)

这是一个重载函数。

返回字符串中第一次出现的索引位置str字节数组中,寻找着从索引位置from。返回-1,如果str找不到。

在Unicode数据使用转换为8位字符QString.toAscii( ) 。

如果QString包含非ASCII Unicode字符,使用此功能可能会导致信息丢失。您可以通过定义关闭此功能QT_NO_CAST_TO_ASCII当您编译您的应用程序。然后,您需要调用QString.toAscii( )(或QString.toLatin1()或QString.toUtf8()或QString.toLocal8Bit( ) )明确,如果你想将数据转换为const char *

  1. QByteArray QByteArray.insert (self, int i, QByteArray a)

[

插入的字节数组ba在索引位置i并返回一个引用到这个字节数组。

例如:

]($docs-qbytearray.html)

  1. QByteArray ba("Meal");
  2. ba.insert(1, [QByteArray]($docs-qbytearray.html)("ontr"));
  3. // ba == "Montreal"

See also append( )prepend( )replace()和remove( ) 。

  1. QByteArray QByteArray.insert (self, int i, QString s)

[

这是一个重载函数。

]($docs-qbytearray.html)

插入字符串str在索引位置i在字节数组。在Unicode数据使用转换为8位字符QString.toAscii( ) 。

If i大于size() ,该阵列是第一,采用扩展resize( ) 。

如果QString包含非ASCII Unicode字符,使用此功能可能会导致信息丢失。您可以通过定义关闭此功能QT_NO_CAST_TO_ASCII当您编译您的应用程序。然后,您需要调用QString.toAscii( )(或QString.toLatin1()或QString.toUtf8()或QString.toLocal8Bit( ) )明确,如果你想将数据转换为const char *

  1. bool QByteArray.isEmpty (self)

返回True如果字节数组的大小为0 ,否则返回False 。

例如:

  1. [QByteArray]($docs-qbytearray.html)().isEmpty(); // returns true
  2. [QByteArray]($docs-qbytearray.html)("").isEmpty(); // returns true
  3. [QByteArray]($docs-qbytearray.html)("abc").isEmpty(); // returns false

See also size( ) 。

  1. bool QByteArray.isNull (self)

返回True如果该字节数组为null ,否则返回False 。

例如:

  1. [QByteArray]($docs-qbytearray.html)().isNull(); // returns true
  2. [QByteArray]($docs-qbytearray.html)("").isNull(); // returns false
  3. [QByteArray]($docs-qbytearray.html)("abc").isNull(); // returns false

Qt后,由于历史原因,空字节数组和空字节数组之间的区别。对于大多数应用来说,重要的是一个字节数组中是否包含任何数据,这可以通过使用来确定isEmpty( ) 。

See also isEmpty( ) 。

  1. int QByteArray.lastIndexOf (self, QByteArray ba, int from = -1)

返回字节数组中最后一次出现的索引位置ba在这个字节数组,从索引位置向后搜索from。如果from为-1 (默认值) ,该搜索从最后一个字节。返回-1,如果ba找不到。

例如:

  1. [QByteArray]($docs-qbytearray.html) x("crazy azimuths");
  2. [QByteArray]($docs-qbytearray.html) y("az");
  3. x.lastIndexOf(y); // returns 6
  4. x.lastIndexOf(y, 6); // returns 6
  5. x.lastIndexOf(y, 5); // returns 2
  6. x.lastIndexOf(y, 1); // returns -1

See also indexOf( )contains()和count( ) 。

  1. int QByteArray.lastIndexOf (self, QString str, int from = -1)

这是一个重载函数。

返回字符串中最后一次出现的索引位置str字节数组中,从索引位置向后搜索from。如果from为-1 (默认值) ,开始搜索在最后(size( ) - 1 )字节。返回-1,如果str找不到。

在Unicode数据使用转换为8位字符QString.toAscii( ) 。

如果QString包含非ASCII Unicode字符,使用此功能可能会导致信息丢失。您可以通过定义关闭此功能QT_NO_CAST_TO_ASCII当您编译您的应用程序。然后,您需要调用QString.toAscii( )(或QString.toLatin1()或QString.toUtf8()或QString.toLocal8Bit( ) )明确,如果你想将数据转换为const char *

  1. QByteArray QByteArray.left (self, int len)

[

返回包含最左边的字节数组len这个字节数组的字节。

]($docs-qbytearray.html)

如果整个字节数组返回len大于size( ) 。

例如:

  1. [QByteArray]($docs-qbytearray.html) x("Pineapple");
  2. [QByteArray]($docs-qbytearray.html) y = x.left(4);
  3. // y == "Pine"

See also right( )mid( )startsWith()和truncate( ) 。

  1. QByteArray QByteArray.leftJustified (self, int width, str fill = ' ', bool truncate = False)

[

返回大小的字节数组width包含由该填充字节数组fill字符。

]($docs-qbytearray.html)

If truncate是假的而size字节数组的( )超过width,则返回的字节数组是该字节数组的一个副本。

If truncate是真实的size字节数组的( )超过width,然后在后的位置的字节数组的副本的任何字节width被删除,并且该副本被返回。

例如:

  1. [QByteArray]($docs-qbytearray.html) x("apple");
  2. [QByteArray]($docs-qbytearray.html) y = x.leftJustified(8, '.'); // y == "apple..."

See also rightJustified( ) 。

  1. int QByteArray.length (self)

size( ) 。

  1. QByteArray QByteArray.mid (self, int pos, int length = -1)

[

返回一个包含一个字节数组len从这个字节数组,起始于位置pos

]($docs-qbytearray.html)

If len为-1 (默认) ,或pos+len\u003e =size( ) ,返回一个包含所有字节起始于位置的字节数组pos直到字节数组的结尾。

例如:

  1. [QByteArray]($docs-qbytearray.html) x("Five pineapples");
  2. [QByteArray]($docs-qbytearray.html) y = x.mid(5, 4); // y == "pine"
  3. [QByteArray]($docs-qbytearray.html) z = x.mid(5); // z == "pineapples"

See also left()和right( ) 。

  1. QByteArray QByteArray.number (int n, int base = 10)

[

返回一个包含字符串相等的数目的字节数组n基地base(默认为10 ) 。该base可以是2到36之间的任意值。

例如:

]($docs-qbytearray.html)

  1. int n = 63;QByteArray.number(n); // returns "63"
  2. [QByteArray]($docs-qbytearray.html).number(n, 16); // returns "3f"
  3. [QByteArray]($docs-qbytearray.html).number(n, 16).toUpper(); // returns "3F"

Note:数字的格式不本地化,缺省的C语言环境,不论使用者的语言环境中使用。

See also setNum()和toInt( ) 。

  1. QByteArray QByteArray.number (float n, str format = 'g', int precision = 6)

[

这是一个重载函数。

]($docs-qbytearray.html)

See also toUInt( ) 。

  1. QByteArray QByteArray.number (int n, int base = 10)

[

这是一个重载函数。

]($docs-qbytearray.html)

See also toLongLong( ) 。

  1. QByteArray QByteArray.number (int n, int base = 10)

[

这是一个重载函数。

]($docs-qbytearray.html)

See also toULongLong( ) 。

  1. QByteArray QByteArray.prepend (self, QByteArray a)

[

预先考虑字节数组ba这个字节数组并返回一个引用到这个字节数组。

例如:

]($docs-qbytearray.html)

  1. QByteArray x("ship");
  2. [QByteArray]($docs-qbytearray.html) y("air");
  3. x.prepend(y);
  4. // x == "airship"

这是相同的插入件(0,ba) 。

注意:QByteArrayimplicitly shared类。因此,如果this是一个空QByteArray,然后this只是在共享中的数据ba。在这种情况下,不复制数据的操作后,取constant time。如果共享的实例被改性时,其将被复制(复制写入时) ,取linear time

If this是不是空QByteArray,数据的深层副本中进行,取linear time

See also append()和insert( ) 。

  1. QByteArray.push_back (self, QByteArray a)

此功能提供了STL的兼容性。它相当于追加(other) 。

  1. QByteArray.push_front (self, QByteArray a)

此功能提供了STL的兼容性。它相当于前置(other) 。

  1. QByteArray QByteArray.remove (self, int index, int len)

[

移除len从字节数组,起始索引位置pos,并返回一个引用数组。

If pos超出范围,没有任何反应。如果pos是有效的,但pos+len比数组的大小较大时,阵列处被截断位置pos

例如:

]($docs-qbytearray.html)

  1. QByteArray ba("Montreal");
  2. ba.remove(1, 4);
  3. // ba == "Meal"

See also insert()和replace( ) 。

  1. QByteArray QByteArray.repeated (self, int times)

[

返回此字节数组的副本重复指定次数times

If times小于1 ,则返回一个空字节数组。

例如:

]($docs-qbytearray.html)

  1. QByteArray ba("ab");
  2. ba.repeated(4); // returns "abababab"

此功能被引入Qt的4.5 。

  1. QByteArray QByteArray.replace (self, int index, int len, QByteArray s)

[

替换len从索引位置字节pos与字节数组after,并返回一个引用到这个字节数组。

例如:

]($docs-qbytearray.html)

  1. QByteArray x("Say yes!");
  2. [QByteArray]($docs-qbytearray.html) y("no");
  3. x.replace(4, 3, y);
  4. // x == "Say no!"

See also insert()和remove( ) 。

  1. QByteArray QByteArray.replace (self, QByteArray before, QByteArray after)

[

这是一个重载函数。

替换len从索引位置字节pos以零结尾的字符串after

注意:这个可以改变字节数组的长度。

]($docs-qbytearray.html)

  1. QByteArray QByteArray.replace (self, QString before, QByteArray after)

[

这是一个重载函数。

替换len从索引位置字节posalen从字符串字节afterafter允许有’\ 0 ‘字符。

此功能被引入Qt的4.7 。

  1. QByteArray.reserve (self, int size)

]($docs-qbytearray.html)

尝试分配内存,至少size字节。如果你事先知道将字节数组将有多大的话,你可以调用这个函数,如果你调用resize( )通常你很可能会获得更好的性能。如果size是低估,会发生最坏的是,QByteArray会有点慢。

此函数的唯一目的是提供微调的手段QByteArray的内存使用情况。一般情况下,你很少会需要调用这个函数。如果你想改变的字节数组的大小,请致电resize( ) 。

See also squeeze()和capacity( ) 。

  1. QByteArray.resize (self, int size)

设置字节数组的大小size字节。

If size大于该电流的大小,字节数组被扩展以使其size与末尾添加额外的字节字节。新的字节被初始化。

If size小于该电流的大小,字节被从端部除去。

See also size()和truncate( ) 。

  1. QByteArray QByteArray.right (self, int len)

[

返回包含最右边的字节数组len这个字节数组的字节。

]($docs-qbytearray.html)

如果整个字节数组返回len大于size( ) 。

例如:

  1. [QByteArray]($docs-qbytearray.html) x("Pineapple");
  2. [QByteArray]($docs-qbytearray.html) y = x.right(5);
  3. // y == "apple"

See also endsWith( )left()和mid( ) 。

  1. QByteArray QByteArray.rightJustified (self, int width, str fill = ' ', bool truncate = False)

[

返回大小的字节数组width包含fill字符后跟这个字节数组。

If truncate是假的字节数组的大小超过width,则返回的字节数组是该字节数组的一个副本。

If truncate是真实的字节数组的大小超过width,然后将得到的字节数组被截断位置width

例如:

]($docs-qbytearray.html)

  1. QByteArray x("apple");
  2. [QByteArray]($docs-qbytearray.html) y = x.rightJustified(8, '.'); // y == "...apple"

See also leftJustified( ) 。

  1. QByteArray QByteArray.setNum (self, int n, int base = 10)

[

设置字节数组的印刷价值n在基地base(默认为10 ),并返回一个引用到的字节数组。该base可以是2到36之间的任意值。

例如:

]($docs-qbytearray.html)

  1. QByteArray ba;
  2. int n = 63;
  3. ba.setNum(n); // ba == "63"
  4. ba.setNum(n, 16); // ba == "3f"

Note:数字的格式不本地化,缺省的C语言环境,不论使用者的语言环境中使用。

See also number()和toInt( ) 。

  1. QByteArray QByteArray.setNum (self, float n, str format = 'g', int precision = 6)

[

这是一个重载函数。

]($docs-qbytearray.html)

See also toUInt( ) 。

  1. QByteArray QByteArray.setNum (self, int n, int base = 10)

[

这是一个重载函数。

]($docs-qbytearray.html)

See also toShort( ) 。

  1. QByteArray QByteArray.setNum (self, int n, int base = 10)

[

这是一个重载函数。

]($docs-qbytearray.html)

See also toUShort( ) 。

  1. QByteArray QByteArray.simplified (self)

[

返回一个字节数组,它已经从空白开始和结束时去除,并具有内部的空格用一个空格代替每个序列。

空白单元,对标准C + +的使用isspace ( )函数返回True的任何字符。这包括ASCII字符’\ T’ ,为’\ n ‘,’ \ V’ , ‘\ F’ , ‘ \ r ‘和’ “ 。

例如:

]($docs-qbytearray.html)

  1. QByteArray ba(" lots\t of\nwhitespace\r\n ");
  2. ba = ba.simplified();
  3. // ba == "lots of whitespace";

See also trimmed( ) 。

  1. int QByteArray.size (self)

返回此字节数组的字节数。

字节数组中的最后一个字节是在位置的大小( ) - 1 。另外,QByteArray确保在位置大小的字节( )总是’\ 0’ ,这样就可以使用的返回值data()和constData()作为参数传递给该期待’\ 0’结尾的字符串函数。如果QByteArray对象是从创建raw data这不包括结尾的空终止字符,然后QByteArray不添加它automaticall除非deep copy被创建。

例如:

  1. [QByteArray]($docs-qbytearray.html) ba("Hello");
  2. int n = ba.size(); // n == 5
  3. ba.data()[0]; // returns 'H'
  4. ba.data()[4]; // returns 'o'
  5. ba.data()[5]; // returns '\0'

See also isEmpty()和resize( ) 。

  1. list-of-QByteArray QByteArray.split (self, str sep)

拆分字节数组转换成子阵的地方sep发生,并返回这些阵列的列表。如果sep不匹配的字节数组,分割任何地方( )返回一个包含此字节数组中的单个元素的列表。

  1. QByteArray.squeeze (self)

释放任何内存不需要存储阵列的数据。

此函数的唯一目的是提供微调的手段QByteArray的内存使用情况。一般情况下,你很少会需要调用这个函数。

See also reserve()和capacity( ) 。

  1. bool QByteArray.startsWith (self, QByteArray a)

如果这个字节数组开头的字节数组,则返回Trueba否则返回False 。

例如:

  1. [QByteArray]($docs-qbytearray.html) url("ftp://ftp.qt.nokia.com/");
  2. if (url.startsWith("ftp:"))
  3. ...

See also endsWith() and left().

  1. QByteArray.swap (self, QByteArray other)

掉期的字节数组other与此字节数组。这个操作是非常快的,而且永远不会。

此功能被引入Qt的4.8 。

  1. QByteArray QByteArray.toBase64 (self)

[

返回字节数组的副本,按Base64编码。

]($docs-qbytearray.html)

  1. QByteArray text("Qt is great!");
  2. text.toBase64(); // returns "UXQgaXMgZ3JlYXQh"

使用Base64编码的数据进行编码的算法定义中RFC 2045

See also fromBase64( ) 。

  1. (float, bool ok) QByteArray.toDouble (self)

返回字节数组转换为double值。

如果转换失败,则返回0.0 。

If ok不为0 :如果发生转换错误, ok设置为False ,否则ok设置为True 。

  1. [QByteArray]($docs-qbytearray.html) string("1234.56");
  2. double a = string.toDouble(); // a == 1234.56

Note:在默认的C语言环境下进行数字转换,而不论用户的语言环境。

See also number( ) 。

  1. (float, bool ok) QByteArray.toFloat (self)

返回字节数组转换为float值。

如果转换失败,则返回0.0 。

If ok不为0 :如果发生转换错误, ok设置为False ,否则ok设置为True 。

Note:在默认的C语言环境下进行数字转换,而不论用户的语言环境。

See also number( ) 。

  1. QByteArray QByteArray.toHex (self)

[

返回字节数组的十六进制编码副本。十六进制编码使用数字0-9和字母AF 。

]($docs-qbytearray.html)

See also fromHex( ) 。

  1. (int, bool ok) QByteArray.toInt (self, int base = 10)

返回字节数组转换为int使用基base,它默认为10 ,并且必须是2和36 ,或0之间。

If base为0时,该基地是使用以下规则自动确定:如果字节数组开始以“0x” ,它被假定为十六进制的,如果它以“ 0 ”时,它被假定为八进制,否则它被假定为是小数。

返回0,如果转换失败。

If ok不为0 :如果发生转换错误, ok设置为False ,否则ok设置为True 。

  1. [QByteArray]($docs-qbytearray.html) str("FF");
  2. bool ok;
  3. int hex = str.toInt(&ok, 16); // hex == 255, ok == true
  4. int dec = str.toInt(&ok, 10); // dec == 0, ok == false

Note:在默认的C语言环境下进行数字转换,而不论用户的语言环境。

See also number( ) 。

  1. (int, bool ok) QByteArray.toLong (self, int base = 10)

返回字节数组转换为longINT使用基base,它默认为10 ,并且必须是2和36 ,或0之间。

If base为0时,该基地是使用以下规则自动确定:如果字节数组开始以“0x” ,它被假定为十六进制的,如果它以“ 0 ”时,它被假定为八进制,否则它被假定为是小数。

返回0,如果转换失败。

If ok不为0 :如果发生转换错误, ok设置为False ,否则ok设置为True 。

  1. [QByteArray]($docs-qbytearray.html) str("FF");
  2. bool ok;
  3. long hex = str.toLong(&ok, 16); // hex == 255, ok == true
  4. long dec = str.toLong(&ok, 10); // dec == 0, ok == false

Note:在默认的C语言环境下进行数字转换,而不论用户的语言环境。

这个函数是Qt 4.1中引入。

See also number( ) 。

  1. (int, bool ok) QByteArray.toLongLong (self, int base = 10)

返回字节数组转换为long long使用基base,它默认为10 ,并且必须是2和36 ,或0之间。

If base为0时,该基地是使用以下规则自动确定:如果字节数组开始以“0x” ,它被假定为十六进制的,如果它以“ 0 ”时,它被假定为八进制,否则它被假定为是小数。

返回0,如果转换失败。

If ok不为0 :如果发生转换错误, ok设置为False ,否则ok设置为True 。

Note:在默认的C语言环境下进行数字转换,而不论用户的语言环境。

See also number( ) 。

  1. QByteArray QByteArray.toLower (self)

[

返回字节数组的小写副本。从ByteArray中被解释为Latin-1的编码字符串。

例如:

]($docs-qbytearray.html)

  1. QByteArray x("Qt by NOKIA");
  2. [QByteArray]($docs-qbytearray.html) y = x.toLower();
  3. // y == "qt by nokia"

See also toUpper()和8-bit Character Comparisons

  1. QByteArray QByteArray.toPercentEncoding (self, QByteArray exclude = QByteArray(), QByteArray include = QByteArray(), str percent = '%')

[

返回此字节数组的一个URI / URL样式的百分比编码副本。该percent参数允许您复盖默认的“%”字符为另一个。

默认情况下,此功能将编码不属于下列之一的所有字符:

]($docs-qbytearray.html)

ALPHA( “a”到“z”的和“A”到“Z” ) /数字(0到9)/ “ - ” /“。 ” / “_“/” 〜“

为了防止字符被编码它们传递给exclude。要强制字符进行编码它们传递给include。该percent字符总是编码。

例如:

  1. [QByteArray]($docs-qbytearray.html) text = "{a fishy string?}";
  2. [QByteArray]($docs-qbytearray.html) ba = text.toPercentEncoding("{}", "s");
  3. qDebug(ba.constData());
  4. // prints "{a fi%73hy %73tring%3F}"

十六进制编码使用数字0-9以及大写字母AF 。

此功能被引入Qt的4.4 。

See also fromPercentEncoding()和QUrl.toPercentEncoding( ) 。

  1. (int, bool ok) QByteArray.toShort (self, int base = 10)

返回字节数组转换为short使用基base,它默认为10 ,并且必须是2和36 ,或0之间。

If base为0时,该基地是使用以下规则自动确定:如果字节数组开始以“0x” ,它被假定为十六进制的,如果它以“ 0 ”时,它被假定为八进制,否则它被假定为是小数。

返回0,如果转换失败。

If ok不为0 :如果发生转换错误, ok设置为False ,否则ok设置为True 。

Note:在默认的C语言环境下进行数字转换,而不论用户的语言环境。

See also number( ) 。

  1. (int, bool ok) QByteArray.toUInt (self, int base = 10)

返回字节数组转换为unsigned int使用基base,它默认为10 ,并且必须是2和36 ,或0之间。

If base为0时,该基地是使用以下规则自动确定:如果字节数组开始以“0x” ,它被假定为十六进制的,如果它以“ 0 ”时,它被假定为八进制,否则它被假定为是小数。

返回0,如果转换失败。

If ok不为0 :如果发生转换错误, ok设置为False ,否则ok设置为True 。

Note:在默认的C语言环境下进行数字转换,而不论用户的语言环境。

See also number( ) 。

  1. (int, bool ok) QByteArray.toULong (self, int base = 10)

返回字节数组转换为unsigned long int使用基base,它默认为10 ,并且必须是2和36 ,或0之间。

If base为0时,该基地是使用以下规则自动确定:如果字节数组开始以“0x” ,它被假定为十六进制的,如果它以“ 0 ”时,它被假定为八进制,否则它被假定为是小数。

返回0,如果转换失败。

If ok不为0 :如果发生转换错误, ok设置为False ,否则ok设置为True 。

Note:在默认的C语言环境下进行数字转换,而不论用户的语言环境。

这个函数是Qt 4.1中引入。

See also number( ) 。

  1. (int, bool ok) QByteArray.toULongLong (self, int base = 10)

返回字节数组转换为unsigned long long使用基base,它默认为10 ,并且必须是2和36 ,或0之间。

If base为0时,该基地是使用以下规则自动确定:如果字节数组开始以“0x” ,它被假定为十六进制的,如果它以“ 0 ”时,它被假定为八进制,否则它被假定为是小数。

返回0,如果转换失败。

If ok不为0 :如果发生转换错误, ok设置为False ,否则ok设置为True 。

Note:在默认的C语言环境下进行数字转换,而不论用户的语言环境。

See also number( ) 。

  1. QByteArray QByteArray.toUpper (self)

[

返回字节数组的大写副本。从ByteArray中被解释为Latin-1的编码字符串。

例如:

]($docs-qbytearray.html)

  1. QByteArray x("Qt by NOKIA");
  2. [QByteArray]($docs-qbytearray.html) y = x.toUpper();
  3. // y == "QT BY NOKIA"

See also toLower()和8-bit Character Comparisons

  1. (int, bool ok) QByteArray.toUShort (self, int base = 10)

返回字节数组转换为unsigned short使用基base,它默认为10 ,并且必须是2和36 ,或0之间。

If base为0时,该基地是使用以下规则自动确定:如果字节数组开始以“0x” ,它被假定为十六进制的,如果它以“ 0 ”时,它被假定为八进制,否则它被假定为是小数。

返回0,如果转换失败。

If ok不为0 :如果发生转换错误, ok设置为False ,否则ok设置为True 。

Note:在默认的C语言环境下进行数字转换,而不论用户的语言环境。

See also number( ) 。

  1. QByteArray QByteArray.trimmed (self)

[

返回一个字节数组,它已经从空白开始和结束时删除。

空白单元,对标准C + +的使用isspace ( )函数返回True的任何字符。这包括ASCII字符’\ T’ ,为’\ n ‘,’ \ V’ , ‘\ F’ , ‘ \ r ‘和’ “ 。

例如:

]($docs-qbytearray.html)

  1. QByteArray ba(" lots\t of\nwhitespace\r\n ");
  2. ba = ba.trimmed();
  3. // ba == "lots\t of\nwhitespace";

不像simplified( ) ,修剪( )独叶内部的空白。

See also simplified( ) 。

  1. QByteArray.truncate (self, int pos)

截断该字节数组索引位置pos

If pos超出了数组的结尾,没有任何反应。

例如:

  1. [QByteArray]($docs-qbytearray.html) ba("Stockholm");
  2. ba.truncate(5); // ba == "Stock"

See also chop( )resize()和left( ) 。

  1. QByteArray QByteArray.__add__ (self, QByteArray a2)

[

  1. QString QByteArray.__add__ (self, QString s)
  1. int QByteArray.__contains__ (self, QByteArray a)
  1. bool QByteArray.__eq__ (self, QString s2)
  1. bool QByteArray.__eq__ (self, QByteArray a2)
  1. bool QByteArray.__ge__ (self, QString s2)
  1. bool QByteArray.__ge__ (self, QByteArray a2)
  1. str QByteArray.__getitem__ (self, int i)

]($docs-qbytearray.html)

  1. QByteArray QByteArray.__getitem__ (self, slice slice)

[

  1. bool QByteArray.__gt__ (self, QString s2)
  1. bool QByteArray.__gt__ (self, QByteArray a2)
  1. int QByteArray.__hash__ (self)

]($docs-qbytearray.html)

  1. QByteArray QByteArray.__iadd__ (self, QByteArray a)

  1. QByteArray QByteArray.__iadd__ (self, QString s)

  1. QByteArray QByteArray.__imul__ (self, int m)

[

  1. bool QByteArray.__le__ (self, QString s2)
  1. bool QByteArray.__le__ (self, QByteArray a2)
  1. QByteArray.__len__ (self)
  1. bool QByteArray.__lt__ (self, QString s2)
  1. bool QByteArray.__lt__ (self, QByteArray a2)

]($docs-qbytearray.html)

  1. QByteArray QByteArray.__mul__ (self, int m)

[

  1. bool QByteArray.__ne__ (self, QString s2)
  1. bool QByteArray.__ne__ (self, QByteArray a2)
  1. str QByteArray.__repr__ (self)
  1. str QByteArray.__str__ (self)

]($docs-qbytearray.html)