压缩十六进制数据

时间:2015-03-12 14:00:36

标签: c compression hex

对于大学,我可以练习压缩一系列数据。在一个文件中有输入数据,我必须用压缩数据写另一个。任务只是存储数字之间的差异。到目前为止,我已经编写了将数据存储在数组中并将其存储在输出文件中的代码。现在我想从压缩开始,但不知道如何做到这一点。我存储了数据类型吗?

输入文件可能如下所示: C9 CB C7 C0 C0 C8 C9 C9 BE 00 04

因此输出文件必须如下所示: C9 C2 90 8C 81 08 BE 80 04

int main(int argc, char **argv) {

    if (argc < 3)
    {
        fprintf(stderr, "Usage: input.txt output.txt\n");
        return EXIT_FAILURE;
    }

    FILE *input, *output;
    input = fopen(argv[1], "r");
    output = fopen(argv[2], "w");
    int c;
    unsigned int values[100] = { 0 };

    int i = 0;
    if (input != NULL)
    {
        printf("Values:\n");
        while ((c = fgetc(input)) != EOF)
        {
            values[i] = c;
            putchar(c);
            i++;
        }
        printf("\n");
        fclose(input);
    }
    else
    {
        fprintf(stderr, "File could not be opened.\n");
        return EXIT_FAILURE;
    }

    if (output != NULL)
    {
        int j = 0;
        for (j; j < i; j++)
        {
            putc(values[j], output);
        }
        fclose(output);
    }
    else
    {
        fprintf(stderr, "Could not generate output file.\n");
        return EXIT_FAILURE;
    }

    return EXIT_SUCCESS;
}

0 个答案:

没有答案