Использование bytearray в Python - PullRequest
       18

Использование bytearray в Python

1 голос
/ 17 февраля 2011

Как я могу реализовать приведенный ниже код (ActionScript) в Python?

var bytes:ByteArray = new ByteArray();
var text:String = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus etc.";

bytes.writeUTFBytes(text); // write the text to the ByteArray
trace("The length of the ByteArray is: " + bytes.length);    // 70
bytes.position = 0; // reset position
while (bytes.bytesAvailable > 0 && (bytes.readUTFBytes(1) != 'a')) {
    //read to letter a or end of bytes
}
if (bytes.position < bytes.bytesAvailable) {
    trace("Found the letter a; position is: " + bytes.position);     // 23
    trace("and the number of bytes available is: " + bytes.bytesAvailable);    // 47
}

Я посмотрел на bytearray и думаю, что этот код охватывает первые 4 строки:

text = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus etc."
bytes = bytearray(text)
print "The length of the ByteArray is: " + str(len(bytes))

Начиная с строки 5, я не уверен в эквиваленте Python.Например, я не смог найти метод position , но могу использовать bytes [i] , где i - позиция в байтовом массиве, который я хочу получить.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011
try:
    index = bytes.index('a')
    print "Found letter a in position", index
    # we substract 1 because the array is 0-indexed.
    print "Bytes available:", len(bytes) - index - 1
except ValueError:
    print "Letter a not found"

Это решение намного понятнее и понятнее человеку, чем код ActionScript, и оно даже следует философии EAFP python.

x[x.index('a')] == 'a', это означает, что x.index('a') вернет индекс первого вхождения a (и повысит ValueError, если в байтовой матрице нет a).

1 голос
/ 17 февраля 2011

Вы можете использовать метод index строки (или bytearray), чтобы найти первый экземпляр значения.Итак ...

if 'a' in bytes:
    position = bytes.index('a')
    print "Found the leter a; position is:", position
    print "and the number of bytes available is:", len(bytes) - position - 1
...