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

Как передать в функцию число и структуру побайтно? - C++

Восстановить пароль Регистрация
 
Dmitriy78781
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 53
01.03.2012, 11:06     Как передать в функцию число и структуру побайтно? #1
Здравствуйте!!! Нужно написать функцию которая принимает некую структуру и число побайтно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2012, 11:06     Как передать в функцию число и структуру побайтно?
Посмотрите здесь:

Как передать в функцию строку и инициализировать ею структуру? C++
C++ как передать структуру в функцию, чтобы после выполнения функции он(массив в данном случае) вернулся измененным?
C++ Как передать указатель на структуру в функцию
C++ Как передать в функцию указатель на структуру, если эта структура не определена глобально?
Как правильно написать функцию, которая редактирует структуру по полю Name и возвращает новую, исправленную структуру?.. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
01.03.2012, 17:06     Как передать в функцию число и структуру побайтно? #2
Dmitriy78781, Могу предположить, что это можно сделать через void*. В функции преобразовываете указатель на байт (например, unsigned char) и читаете до конца данных. Только саму структуру нужно организовать правильно с выравниванием. Как то так.
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
01.03.2012, 17:27     Как передать в функцию число и структуру побайтно? #3
Цитата Сообщение от Xind Посмотреть сообщение
Могу предположить, что это можно сделать через void*
а почему бы сразу не через unsigned char* ?
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
01.03.2012, 17:30     Как передать в функцию число и структуру побайтно? #4
Цитата Сообщение от Nameless One Посмотреть сообщение
а почему бы сразу не через unsigned char* ?
можно подробнее. Если в фун. будет параметр unsigned char* и ему передать указатель на структуру, то будет работать?
Этим не занимался, точно сказать не могу. Можно пример?
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
01.03.2012, 17:39     Как передать в функцию число и структуру побайтно? #5
Цитата Сообщение от Xind Посмотреть сообщение
можно подробнее. Если в фун. будет параметр unsigned char* и ему передать указатель на структуру, то будет работать?
почему бы и нет? Указатель можно свободно скастовать к любому другому типу указателя:
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
#include <stdio.h>
#include <stdlib.h>
 
void print_bytes(const unsigned char* bytes, size_t size)
{
    size_t i;
 
    printf("%08u: ", size);
    
    for(i = 0; i < size; ++i)
    printf("%03u ", bytes[i]);
    putchar('\n');
}
 
struct s
{
    int i;
    double d;
};
 
int main(void)
{
    int i = 42;
    int j = 512;
    int k = 100500;
 
    struct s s = {900, 415.89};
        
    print_bytes((unsigned char*) &i, sizeof(i));
    print_bytes((unsigned char*) &j, sizeof(j));
    print_bytes((unsigned char*) &k, sizeof(k));
 
    print_bytes((unsigned char*) &s, sizeof(s));
        
    exit(0);
}
Yandex
Объявления
01.03.2012, 17:39     Как передать в функцию число и структуру побайтно?
Ответ Создать тему
Опции темы

Текущее время: 02:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru