Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Устал искать баг https://www.cyberforum.ru/ cpp/ thread338761.html
Проблемма проста - нужно удалить из вещественной матрицы строку и столбец, верней ряд строк и столбцов (условие - нулевой элемент на главной диагонале, даже привожу рисунок) Пропускаю матрицу А и...
C++ Обработка файов регулярными выражениями.
Задайте верное направление. Исходная задача. Необходимо обработать текстовый файл "умным образом". Где то достаточно просто замены "А" на "Б"; где то необходимы регулярные выражения (например,...
C++ Выбор технологии
Всем привет! У меня такой вопрос Вот я сейчас работаю в компании, которая занимается разработкой ПО на С++ Начал разработку проекта Про технологию речи не шло, я скачал много учебников (имею...
C++ RxGifAnimator Всем привет дайте мне кто нибудь файл RxGifAnimator для С Добавлено через 10 секунд кому не жалко https://www.cyberforum.ru/ cpp/ thread338527.html
C++ Работа с pdf в Cairo. https://www.cyberforum.ru/ cpp/ thread338459.html
Помогите разобраться с выводом графики в pdf. Английский не знаю. Очень трудно читать буржуйские мануалы, 3 день парюсь. Самый важный вопрос: Какая функция начинает вторую страницу pdf??? ...
C++ При запуске консоль не поддерживается
Добрый день. Есть такая проблема, прога работает нормально но одно диалоговое окно задолбало(извините...)... При запуске прилрожения выскакивает: Диалоговое окно "WARNING" Selected console type...
сс3260mt.dll C++
Билдер пишет, что на компе нет сс3260mt.dll и упорно отказывается запускать мои проги. Я скачал эту библиотеку, в какую папку её пихать?
C++ Вопрос про Visual Express Что делать если мне нужна студия для С++ и С#? Скачивать Express C++ и Express C#? Это будет занимать меньше места, чем одна Visual Studio (pro/ultimate)? https://www.cyberforum.ru/ cpp/ thread337635.html
C++ [Квест] Нужно написать распаковщика https://www.cyberforum.ru/ cpp/ thread337618.html
Здравствуйте, нужно написать распаковщика который будет распаковывать пару файлов на рабочий стол и один файл в корень жесткого диска. Если кто может помочь выполнить данное задание оставляйте...
C++ Обмен опытом и сотрудничество Здравствуйте, программисты, веб-мастера, дизайнеры. Рад буду пообщаться, обменяться опытом, и принять участие в совместных проектах. Увлекаюсь веб технологиями, сейчас пытаюсь осваивать дизайн. На... https://www.cyberforum.ru/ cpp/ thread336904.html
Заблокирован
Автор FAQ
03.08.2011, 23:06 0

Битстаффинг

03.08.2011, 23:06. Просмотров 6365. Ответов 21
Метки (Все метки)

Ответ

Вот перевод с вставкой битов, для наглядности делал вставку не 0 а 2-ка, это лего изменить
Код и скриншот работы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <windows.h>
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
 
char * str = (char *)malloc(sizeof(char));
char * bin = (char *)malloc(sizeof(char));
 
char * get_text(char * s, int &Len);
char * str2bin(char * s, char * bin);
char * int2bin(int val, char * bin);
char * bitstuf(char * bin, char *ins_after, char bit);
char * inschar(char * s, int i, char ch);
 
int main()
{
    int sLen = 0;
    do
    {
        printf("Enter input string\r\n");
        str = get_text(str,sLen);bin[0] = '\0';
        printf("\tBinary string\r\n");
        printf("%s\r\n",(bin = str2bin(str,bin)));
        printf("\tBits after bitstuf\r\n");
        printf("%s\r\n",(bin = bitstuf(bin, "11111", '2')));
        printf("[Y/N] - Enter new string\r\n");
    }
    while('Y' == toupper(getch()));
    return 0;
}
 
char * get_text(char * s, int &Len)
{
    if(s)
    {
        Len = 0;
        while((s[Len] = getchar()) != '\n')
            s = (char *)realloc(s,(1 + (Len = Len + 1))*sizeof(char));
        s[Len] = '\0';
    }
    return s;
}
 
char * str2bin(char * s, char * bin)
{
    int i = 0;
    while((s + i)[0] != '\0')
    {
        bin = int2bin(s[i], bin);
        i++;
    }
    return bin;
}
 
char * int2bin(int val, char * bin)
{
    int i = 0,len = strlen(bin);
    bin = (char *)realloc(bin,len + 8);
    bin[len] = '0';
    while(0 < val)
    {
        bin[len + 6 - i] = '0';
        if(val%2 != 0)
            bin[len + 6 - i] = '1';
        val = val/2;
        i++;
    }
    bin[len + 7] = '\0';
    return bin;
}
 
char * bitstuf(char * bin, char *ins_after, char bit)
{
    char * buf;
    int pos = 0;
    if(bin && ins_after)
    {
        buf = strstr(bin + pos,ins_after);
        while(buf)
        {
            pos = strlen(bin) - strlen(buf) + strlen(ins_after);
            bin = inschar(bin, pos, bit);
            buf = strstr(bin + pos + 2,ins_after);
        }
    }
    return bin;
}
 
char * inschar(char * s, int i, char ch)
{
    int sLen;
    if(s)
    {
        sLen = strlen(s);
        s = (char *)realloc(s,(sLen + 1)*sizeof(char));
        memcpy((void *)&s[i + 1],(void *)&s[i],sLen - i);
        s[sLen + 1] = '\0';
        s[i] = ch;
    }
    return s;
}


Вернуться к обсуждению:
Битстаффинг
0
Миниатюры
Битстаффинг  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.08.2011, 23:06
Готовые ответы и решения:

C\C++ Битстаффинг (Bitstuffing)
Добрый день, уважаемые господа и дамы. Стоит задача реализовать битстаффинг, забитстаффить инфу на...

Verilog. Битстаффинг и дестаффинг
Попытался я сымитировать битстаффинг (предупреждение появления последовательностей из 5 нулей или...

21
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.