1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Кодирование Для Сжатия Данных

Тема в разделе "C/C++/C#", создана пользователем Akerlem, 19 ноя 2012.

  1. Akerlem

    Akerlem New Member

    Репутация:
    0
    Регистрация:
    19 ноя 2012
    Сообщения:
    1
    Симпатии:
    0
    Нужно закодировать\декодировать файл, который содержит числа, для сжатия данных.
    Можно все чила(0-9) закодировать не целым байтом, а половиной.
    Как ето реализовать на практике?

    Дошёл до следующего: (Если будут другие идеи то с радостью вислушаю)


    Код:
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <locale.h>
    
    typedef unsigned char byte;
    
    byte pack(byte higher, byte lower)
    {
    return (higher << 4) + lower;
    }
    
    void unpack(byte val, byte *higher, byte *lower)
    {
    *lower = val & 15;
    *higher = val >> 4;
    }
    
    void print_digit(const char *message, byte digit)
    {
    if(message != NULL)
    printf("%s ", message);
    printf("%u\n", (unsigned) digit);
    }
    
    int main(void)
    {
    setlocale(LC_ALL,".1251");
    FILE * f;
    FILE * FileIn;
    FILE * FileOut;
    unsigned char Arr[10000] = {0};
    byte symb1;
    
    byte x = 3, y = 2, packed = pack(x,y);
    
    puts("Before packing:");
    
    FileIn = fopen("InCode.txt","rb"); 
    FileOut = fopen("OutCode.txt","w+");
    
    
    printf("Coding : \n");
    
    while (!feof(FileIn))
    {
    symb1=getc(FileIn);//Где-то здесь нужно доделать.Что бы читался двоичный код символа и к нему и следующему применялвсь функция pack.
    symb1=symb1+3;
    // fread((void*)&buffer,sizeof(byte),2,FileIn);
    //symb1=symb1-'0';
    fprintf(FileOut,"%c",pack(symb1,symb1+1));
    printf("%c +1---%c %c\n",symb1,(symb1+1),pack(symb1,symb1+1)); 
    //symb1=symb1+3;
    }
    
    fclose(FileIn);
    fclose(FileOut);
    
    
    //exit(EXIT_SUCCESS);
    getch();
    return 0;
    }
     
  2. rrrFer

    rrrFer Гость

    Репутация:
    0
    от 0 до 128 тогда, но при этом в исходном файле не должно быть значения больше 128
    если в файле нечетное число байт - программа упадет?
     
Загрузка...
Похожие Темы - Кодирование Для Сжатия
  1. Dios1986
    Ответов:
    17
    Просмотров:
    4.765
  2. Unkown_
    Ответов:
    0
    Просмотров:
    15
  3. PingVinich
    Ответов:
    3
    Просмотров:
    486
  4. Мария Смирнова
    Ответов:
    0
    Просмотров:
    80
  5. Elektrolife
    Ответов:
    11
    Просмотров:
    465

Поделиться этой страницей