Двоичный буфер в Python

В корне NDK есть файл source.properties для r11 и new. Предыдущие версии имели RELEASE.TXT.

57
задан twasbrillig 2 November 2014 в 02:19
поделиться

2 ответа

Пока Вы не пытаетесь поместить любые unicode данные в Ваш StringIO, и Вы боитесь использовать cStringIO, необходимо быть в порядке.

Согласно документация StringIO , пока Вы придерживаетесь или unicode или 8 битов, все работает как ожидалось. По-видимому, StringIO делает что-то специальное, когда кто-то делает f.write(u"asdf") (который ZipFile не делает к моему знанию). Так или иначе;

import zipfile
import StringIO

s = StringIO.StringIO()
z = zipfile.ZipFile(s, "w")
z.write("test.txt")
z.close()
f = file("x.zip", "w")
f.write(s.getvalue())
s.close()
f.close()

работы, столь же ожидаемые, и нет никакого различия между файлом в получающемся архиве и исходным файлом.

, Если Вы знаете об особом случае, где этот подход не работает, мне больше всего было бы интересно слышать об этом:)

24
ответ дан twasbrillig 24 November 2019 в 19:33
поделиться

Посмотрите на пакет структуры: https://docs.python.org/library/struct.html , это позволяет Вам интерпретировать строки как упакованные двоичные данные.

Не уверенный, если это полностью ответит на Ваш вопрос, но можно использовать struct.unpack () для преобразования двоичных данных в объекты Python.


import struct
f = open(filename, "rb")
s = f.read(8)
x, y = struct.unpack(">hl", s)

интервал этот пример,">" говорит для чтения обратного порядка байтов, "h" читает короткие 2 байта, и "l" для 4 байта длиной. можно, очевидно, изменить их на то, что необходимо считать из двоичных данных...

3
ответ дан twasbrillig 24 November 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: