Форум программистов, компьютерный форум CyberForum.ru

Шифрация битов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Выход на биты в поразрядных операторах http://www.cyberforum.ru/cpp-beginners/thread633033.html
Здравствуйте. Обьясните пожалуйста есть код: #include <iostream.h> #include <conio.h> #pragma argsused void Bits(unsigned); int main() {unsigned x;
C++ Предоставить пользователю возможность выбрать цвет фона и текста в консоле Помогите пожалуйста написать программу, которая бы предоставляла пользователю возможность выбрать цвет фона и текста консоли, с помощью операторов: switch и system ("color"). http://www.cyberforum.ru/cpp-beginners/thread632980.html
C++ Построение сети в теории, на основе сокетов
Построение сетей на основе soket api - протокол только TCP\IP Раскажите в теории как основано это, кодов не надо так токово, просто какие и в каком порядке функции вызываються наприемр.
C++ Templates (composition). exception handling run-time error
Код компилируется. Если делать циклы для push and pop размера такого чтоб не превышало размеры Стока то все работает нормально если циклы больше размера стока то выходит вот такая картинка в консоле (см. принт скрин ) Заранее спасибо. // // (---.Array_hpp---) // #ifndef Array_HPP // Preprocessor gates
C++ Создание окон http://www.cyberforum.ru/cpp-beginners/thread632939.html
Пожалуйста подскажите, как создавать и работать с окнами.
C++ Подскажите где ошибка, или может есть другой вариант реализации кода // Упорядочить статический массив(заполненый случайными числами), чтобы в нём чередовались чётные и нечётные элементы, разницу записываем в конец массива. // Функции не использовать. const int n=10; int ar,ch,c2=0,c=0,nch,k=0,p=0; for(int i=0;i<n;i++){ ar=rand()%11; cout<<ar<<"\t"; } cout<<endl; подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
04.08.2012, 22:15     Шифрация битов
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
пyтём смeны мeстaми 0-гo и 1-гo битoв, 2-гo и 3-гo, … , 30-гo и 31-гo битoв.
Фyнкция дoлжнa принимaть в кaчeствe пaрaмeтрa пeрeмeннyю типa unsigned
int и вoзврaщaть в кaчeствe рeзyльтaтa «зaшифрoвaннoe» числo тoгo же типa.
помогите решить вот такую задачу. пробывал писать коды с if не получалось. в цикле тоже не работало.
каким образом её можно решить?
Вот вариант с представлениями битов
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
#include <iostream>
using namespace std;
 
//Получает массив двоичного представления числа val
int * getBinArray(int val, int &n);
//Функция возвращает зашифрованній массив
int * getCrypt(int * bin, int n);
//Функция преобразует массив двоичного представления в десятичное
int getDecValue(int * c, int nc);
//Функция печатает на экране элементы одномерного массива
void showVec(int * vec, int n);
 
int main()
{
    int n   = 0;//будет содержать число бит в числе
    int val = 0;//вводимое десятичное число
    cout<<"Dec = ";cin>>val;
    int * bin  = getBinArray(val, n);
    cout<<"Bin = ";  showVec(bin, n);
    bin = getCrypt(bin, n);//щифруем
    cout<<"Enc = ";  showVec(bin, n);
    cout<<"Dec = "<<getDecValue(bin, n)<<endl;
    delete [] bin;
    return 0;
}
 
int * getBinArray(int val, int &n)
{
    n       = 1;
    int buf = val;
    while(buf /= 2)
        n = n + 1;
    int * arr = new int[n];
    for(int i = 0; i < n; i++)
    {
        arr[n - 1 - i] = val % 2;
        val            = val / 2;
    }
    return arr;
}
 
int * getCrypt(int * bin, int n)
{
    for(int i = 0; i + 2 < n; i += 2)
        swap(bin[n - 1 - i],bin[n - 2 - i]);//Меняем местами биты
    return bin;
}
 
int getDecValue(int * bin, int n)
{
    int val = 0;
    int pwr = 1;
    for(int i = 0; i < n; i++)
    {
        val += bin[n - 1 - i]*pwr;
        pwr *= 2;
    }
    return val;
}
 
void showVec(int * vec, int n)
{
    for(int i = 0; i < n; i++)
        cout<<vec[i]<<" ";
    cout<<endl;
}
Писал быстро и тестил всего пару раз, но думаю всё ок
Миниатюры
Шифрация битов  
 
Текущее время: 02:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru