С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
каддафи
4 / 4 / 1
Регистрация: 02.10.2012
Сообщений: 135
#1

Не получается каждый байт переменной вывести побитно - C++

30.12.2013, 08:38. Просмотров 900. Ответов 2
Метки нет (Все метки)

Здравствуйте. С помощью шаблонов, нужно разный тип переменной разбить на байты и каждый байт вывести по битам. . Насчет побитно разложить и вычислить сколько байт в переменной понятно как. Надо как то каждый байт переменной загнать в массив char и потом каждый элемент прогонять через функци. преобразования в биты (printbyte(p). Плохо понял эту тему с преобразовыванием и шаблонами, может подскажите как?

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
#include "iostream"
#include "time.h"
#include "iomanip"
 
using namespace std;
 
void printbyte(unsigned char x) ///funkciya razlojeniya pobitno
{
     for (int i=0; i<8; i++)
     {
         if (x& 0x80) cout<<1;
         else cout <<0;
         x=x<<1;
         }
         cout<<endl;
}
template <typename T> T print(T A)  // shablon funkcii
{
         cout<<sizeof(A)<<endl;
       //unsigned char *p = (unsigned char*) &A; 
unsigned char p=A;
cout<<(int)p<<endl;
   printbyte(p);  // zapusk funkcii razlojeniya pobitno
}
         
int main()
{
    int b=57;  // peremennaya kotoruy nujno razdelit pobaitam i razlojit pobitno, tip mojet bit ne tolko int
  print(b);
   
            
    system("pause");
    return 0;
}
Добавлено через 15 часов 41 минуту
ни кто не поможет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2013, 08:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не получается каждый байт переменной вывести побитно (C++):

Составить побитно байт из целочисленных чисел - C++
Разряды 2, 7, 11, 13 целочисленной переменной a должны образовывать младшую тетраду старшего байта целочисленной переменной b. Остальные...

Увеличить в файле каждый четный байт на единицу - C++
Здравствуйте, помогите пожалуйста реализовать следующее задание. В производном файле, используя класс fstream, создать метод,...

Подсчитать сколько раз встречается каждый байт файла - C++
Прога открывает любой файл, в нем считывает общее количество байт. А далее начинается самое интересное, нужно организовать подсчет частоты...

Количество байт в переменной - C++
Здравствуйте, помогите пожалуйста мне разобраться как сделать чтобы общее количество байт в переменной A равно sizeof(A). #include...

Количество байт занимаемое переменной - C++
В случае с с2+0, потребляются ли 3 байта? И как сделать вывод без приведения типов, чтобы не потреблять еще 3 байта. И да как сделать такой...

Разработать программу, которая динамически выделяет 100 блоков памяти по 1000 байт каждый и освобождает их - C++
Всем привет. Подкинули на учебе вот такое задание - Напишите программу, которая динамически выделяет 100 блоков памяти по 1000 байт каж-дый...

2
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.12.2013, 09:01 #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
#include <iostream>
#include <time.h>
#include <iomanip>
 
using namespace std;
 
void printbyte(unsigned char x) ///funkciya razlojeniya pobitno
{
    for (int i=0; i<8; i++)
    {
        if (x& 0x80) cout<<1;
        else cout <<0;
        x=x<<1;
    }
    cout << endl;
}
template <typename T> void print(T A)  // shablon funkcii
{
    int n = sizeof(A);
    cout << n <<endl;
 
    unsigned char *p = (unsigned char*) &A; 
    //unsigned char p = A;
    //cout << (int)p << endl;
    for (int i = 0; i < n; ++i)
    {
        printbyte(*p);  // zapusk funkcii razlojeniya pobitno
        ++p;
    }
}
         
int main()
{
    int b = 57;  // peremennaya kotoruy nujno razdelit pobaitam i razlojit pobitno, tip mojet bit ne tolko int
    print(b);
    char ch = 'a';
    print(ch);
            
    system("pause");
    return 0;
}
1
каддафи
4 / 4 / 1
Регистрация: 02.10.2012
Сообщений: 135
30.12.2013, 13:25  [ТС] #3
спасибо, работает как надо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2013, 13:25
Привет! Вот еще темы с ответами:

Присвоить переменной типа int содержимое четырёх байт из массива - C++
Есть массив байт. Нужно выбрать из него четыре байта подряд (например, со второго по пятый) и вернуть как int.

Определить, что старший байт числа равен значению переменной с - C++
Вот такое задание.... Буду рада хотя бы алгоритму выполнения. Дана переменная char c. Напишите цикл для подсчета в заданном диапазоне...

Создать две переменных, ввести их с клавиатуры. Вывести строки: имя переменной - адрес переменной - значение п - C++
Создать две переменных, ввести их с клавиатуры. Вывести строки: имя переменной - адрес переменной - значение переменной.

Записать в файл побитно - C++
есть массив short int нужно записать в файл(.wav) побитно


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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