кодирование методом Хаффмана

Можете ли вы просто восстановить строку с помощью срезов, если эта логика последовательна?

s = OrderProduct['OrderProductId'][i]
new_s = s[5]+s[7]+s[1:2]+s[6]+s[4]+s[0]+s[3]+s[1]

или в виде строки формата:

new_s = '{}{}{}{}{}{}{}'.format(s[5],s[7]...)

Редактировать: +1 для предложения Дэйва о '.join () список против конкатенации.

7
задан pepsi 3 April 2012 в 14:24
поделиться

5 ответов

Самая маленькая сумма битов, к которым можно получить доступ и сохранение, равняется 8 = 1 байт. Можно получить доступ к битам в байте с помощью разрядных операторов ^ и |.

Можно установить бит n'th на 1 использование:

my_byte = my_byte | (1 << n);

где n от 0 до 7.

Можно установить бит n'th на 0 использований:

my_byte = my_byte & ((~1) << n);

Можно переключиться, n'th укусил использование:

my_byte = my_byte ^ (1 << n);

Больше деталей здесь.

3
ответ дан 6 December 2019 в 11:52
поделиться

Нет, самый маленький объем данных, который можно записать в файл, составляет один байт.

Можно использовать bitset, чтобы сделать биты управления легче, затем использовать ofstream для записи в файл. Если Вы не хотите использовать bitset, можно использовать побитовые операторы для управления данными прежде, чем сохранить его.

9
ответ дан 6 December 2019 в 11:52
поделиться

ответ klew является, вероятно, тем, который Вы хотите, но только добавить что-то к тому, что сказал Bill, библиотеки Boost имеют dynamic_bitset, который я нашел полезным в аналогичной ситуации.

2
ответ дан 6 December 2019 в 11:52
поделиться

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

Но самый маленький объект, что можно вставить файл, является байтом.
Я использовал бы dynamic_bitset и каждый раз, когда размер стал больше, чем 8, извлекают нижнюю часть 8 битов в символ и пишут это в файл, затем смещают остающиеся биты вниз 8 мест (повторение).

2
ответ дан 6 December 2019 в 11:52
поделиться

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

1
ответ дан 6 December 2019 в 11:52
поделиться
Другие вопросы по тегам:

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