Я использую небольшой Python script для генерации некоторых двоичных данных, которые будут использоваться в заголовке C.
Эти данные должны быть объявлены как char[]
, и будет хорошо, если бы он мог быть закодирован как строка (с соответствующими управляющими последовательностями, когда они не находятся в диапазоне символов ASCII для печати), чтобы сохранить заголовок более компактный, чем с кодировкой десятичного или шестнадцатеричного массивов.
Проблема заключается в том, что когда я печатаю строку repr
строки Python, она ограничивается одинарными кавычками, а C не нравится. Наивное решение состоит в том, чтобы сделать:
'"%s"'%repr(data)[1:-1]
но это не сработает, если один из байтов данных является двойной кавычкой, поэтому мне также понадобится их экранирование.
Я думаю, что простая replace('"', '\\"')
могла бы выполнить эту работу, но, возможно, там было лучшее, более питоническое решение.
Дополнительная точка:
Было бы удобно также разделить данные в строках примерно на 80 символов, но опять же простой подход расщепления исходной строки в кусках размером 80 выиграл ' t, так как каждый непечатаемый символ принимает 2 или 3 символа в escape-последовательности. Разделение списка в кусках 80 после получения рефера также не поможет, поскольку оно может разделить escape-последовательность.
Любые предложения?