@EnDanMen4255
Считаю себя дэфербелятором

Как ввести длинный поток байтов?

Мне нужно ввести длинную строку сырых байтов(более 7 кб) в питон
пример: b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00.........
пробовал encode() но он изменяет сам поток
sys.read() читает не весь поток
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 3
Vindicar
@Vindicar
RTFM!
sys.stdin.read() в цикле, пока не прочитаешь пустую строку.
Ну или запиши в файл и читай оттуда, таким же способом.
Ответ написан
@rPman
Ввести как константу в исходниках? самое простое base64 encoding
base64.b64decode('твоя base64 строка')

а сам исходный файл кодируй либо какой либо утилитой либо онлайн либо напиши программу на python в 3 строчки
-------------

есть утилита xxd, она преобразует файл в набор 16-ричных цифр, добавить к ним \x и заключить в ковычки b'\x...' получишь свою строку

-----------

chatgpt сгенерировал такую программу, чтобы сделать это самому да еще и печатные символы в код не преобразовывать, выглядит вроде верным кодом
import string

# Откройте файл в режиме чтения байтов и прочитайте его содержимое
with open('your_file', 'rb') as f:
    byte_content = f.read()

# Преобразуйте байты в строку байтов
byte_string = ''
for b in byte_content:
    if chr(b) in string.printable and b not in (0x0a, 0x0d):  # Проверка, является ли символ печатным и не является ли он символом новой строки или возврата каретки
        byte_string += chr(b)
    else:
        byte_string += '\\x{:02x}'.format(b)

# Выведите строку байтов
print(byte_string)
Ответ написан
Комментировать
Daemon23RUS
@Daemon23RUS
7кб вроде не много, указать размер буфера при чтении больше чем размер данных
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы