bitarray.to01 () не возвращает только 0s и 1s в строке (Python)

Я использую библиотеку bitarray для управления преобразованием битов и для записи двоичного файла в Python. Файл bitarray.to01 () перед записью в файл имеет длину 4807100171 . По какой-то причине я не могу понять, после получения бит fromfile ( b.fromfile(file) ), а затем преобразован в строку из 0s и 1 с с помощью to01() , в моей строке есть не только 0 и 1s ( \x00 ), а затем, когда я работаю с ним, я получаю эту ошибку:

 ValueError: invalid literal for int() with base 2: '0000000000000000\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 

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

Редактировать:

Вот способ воспроизвести проблему:

 import re from bitarray import bitarray b = bitarray(4807100171) b.setall(False) if re.match("^[\d]+$", b.to01()): print "there is only digits in this string." else: print "there is not only digits in this string." 

** Редактировать # 2:

Однако, если я проверю свою машину с помощью platform.architecture() и sys.maxint , я получаю следующее:

 In [1]: import platform, sys In [5]: platform.architecture(), sys.maxint Out[5]: (('64bit', ''), 9223372036854775807) 

Итак, это примерно 2 ^ 63. Как получилось, что он усекает при 2 ^ 32? У меня 4 ГБ барана. Я получаю это 2 ^ 32 * 1.16415e-10 * 8 (так как я преобразовываю его в строку) ~ = 4 ГБ … Но как насчет того, что это 64-битная машина?

One Solution collect form web for “bitarray.to01 () не возвращает только 0s и 1s в строке (Python)”

ould не имеет памяти на вашем компьютере, чтобы запустить метод to01 на bitarray этого размера. Строка будет использовать один байт на цифру (по крайней мере) – и вы получите более 2 ** 32 цифры. Поскольку вы не ошибаетесь или не получаете ошибок в памяти, возможно, вы попали в некоторую ошибку в bitarray – Но … отступите!

Почему на Земле вам нравится четырехмиллиметровая строка «0» и «1»? Напечатайте себе Matrix тематический гоночный трек ??

Если вам нужно преобразовать даже несколько сотен тысяч цифр в 0 и 1, чтобы искать какой-либо шаблон или что-то еще, вам лучше делать это в интерактивном режиме, конвертируя несколько байтов за раз, чем вы там пытаетесь.

  • Строка Python 3.1.1 в шестнадцатеричном формате
  • C # - File.ReadAllBytes дает видимые неправильные значения
  • Python, file (1) - Почему числа и диапазон (0x20, 0x100) используются для определения текстового или двоичного файла
  • Преобразование hex / двоичной строки в Swift
  • Python - как преобразовать int в строку, представляет собой 32-битное число Hex
  • случайная строка байтов в python
  • Преобразование целого в шестнадцатеричную строку с определенным форматом
  • Как XOR две шестнадцатеричные строки, чтобы каждый байт был XORed отдельно?
  • Python - лучший язык программирования в мире.