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

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

Мне нужно ввести длинную строку сырых байтов(более 7 кб) в питон
пример: b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00.........
пробовал encode() но он изменяет сам поток
sys.read() читает не весь поток
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 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кб вроде не много, указать размер буфера при чтении больше чем размер данных
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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