но не пойму его логику char c = 0xa5;
int n = 2;
int bit = (c >> n) & 1;
printf("bit = %d\n", bit); И чар в текстовом файле может не всегда быть равный 8 бит?
Размер чара не зависит от файлов
ну побитно с файла вы не считаете никак. Точно это нужно?
нужно считывать чар и разлаживать их на биты? пробовал алгоритм хаффмана, но не знаю как записать биты файл.
это нужно создать чар в него пихнуть 8 бит и этот чар в файл кинуть?
Это нужно пойти почитать как в с++ работать с файлами
подождите, а что вы делаете?
сжатие текста по алгоритму Хаффмана
во-первых, точно стоит лезть в Хаффмана, если проблемы с чтением файла возникают? если все равно нужно, то почему вы хотите побитно писать? Не проще обработать весь текст, если он маленький, и потом целиком все в файл побайтно записать?
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
#include <iostream> #include <fstream> constexpr int ERROR{}; constexpr int OK{ 1 }; constexpr int SIZE_READ{ 1 }; constexpr int SIZE_BYTE{ 8 }; int main() { std::ifstream src{ "config.yaml", std::ios::binary }; if (src.fail()) { return ERROR; } uint8_t byte{}; while (!src.fail()) { src.read(reinterpret_cast<char*>(&byte), SIZE_READ); for (int i{}; i < SIZE_BYTE; ++i) { std::cout << ((byte >> i) & 0x1) << " "; } } return OK; }
#include <iostream> #include <fstream> constexpr int ERROR{}; constexpr int OK{ 1 }; constexpr int SIZE_READ{ 1 }; constexpr int SIZE_BYTE{ 8 }; int main() { std::ifstream src{ "file", std::ios::binary }; if (src.fail()) { return ERROR; } uint8_t byte{}; while (!src.fail()) { src.read(reinterpret_cast<char*>(&byte), SIZE_READ); for (int i{}; i < SIZE_BYTE; ++i) { std::cout << ((byte >> i) & 0x1) << " "; } } return OK; }
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
Лучше не использовать капс, оставь его препроцессору...
Здесь нарушена договоренность о передаче уапеха в шел программах. Успех - это 0, у тебя 1
Обсуждают сегодня