Как читать данные из файла что бы их закодировать?
У меня есть файл это может быть не обязательно jpg, файл может быть любой.
Я хочу через программу открыть этот файл и сжать его, используя что то свое. Для этого мне надо открыть файл, это вроде я понял как сделать, далее мне нужно вытащить его код что бы изменить его на свой, я же верно думаю.
Вот что я сделал.
int main() {
std::ifstream fs("1.jpg");
if (fs) {
std::cout << " Yes " << std::endl;
}
else {
std::cout << " No " << std::endl;
}
char s;
for (fs >> s; !fs.eof(); fs >> s)
std::cout << s;
system("pause");
return 0;
}
на выходе я получаю какой то код, а консоль у меня пикает, я думаю это ASCII, я не совсем уверен что ASCII это правильно, может надо выводить его по другому.
Иначе как я смогу каждый символ в файле перекодировать на свои ключи?
А возможно я все не верно делаю подскажите кто знает.
Кароче говоря мне нужно реализовать сжатия и перекодировать файл в свой стиль например восьмеричный, шестнадцатеричный но скорее всего что то уникально.
Ответы (1 шт):
Начнем с того, что байт - это 8 бит, с помощью которых можно закодировать значения
от 0 - 00000000b (0x00) до 255 - 11111111b (0xFF)
Каждому из этих значений есть свое применение, например:
65 - 01000001b (0x41) - это большая буква 'A' латинского алфавита, а 122 - 01111010b (0x7A) - это маленькая буква 'z'.
Но не все коды соответствуют символам, которые можно отобразить, есть ещё категория управляющих символов, нопример 7 - 00000111b (0x07) - этот символ называется BEL (или bell) и означает звуковой сигнал - тот самый, который вы пытаетесь вывести на экран и слышите писк динамика.
Подробнее о назначении всех символов можно почитать тут https://ru.wikipedia.org/wiki/ASCII
чтобы выводить именно коды на экран, необходимо открыть файл с флагом binary, а при выводе в консоль привести тип к int - тогда он будет отображаться как число (тот самый код символа).