Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Abraziv__
3 / 3 / 2
Регистрация: 05.02.2013
Сообщений: 402
1

Преобразование указателя в массив

05.09.2013, 16:19. Просмотров 901. Ответов 5
Метки нет (Все метки)

Всем привет. Есть указатель с типом const u_char * , известно , что он указывает на N байт. Как преобразовать его в массив;

Пробовал вот так :
C++
1
2
3
const u_char * data; // будем считать что указатель уже задан
u_char * arr = new u_char[N];
arr = ( u_char * ) data;
Если делать так, то заместо данных белиберда какая та.

Вот сам код :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void dispatcher_handler(u_char *param,const struct pcap_pkthdr *header, const u_char *packet)
{
        
    const struct mac_da_sa_type * mac;
    mac = ( struct mac_da_sa_type *) packet;    
    data_packet = ( u_char * ) ( packet + 14 );
    u_char mac_ok[6] = {6,5,4,3,2,1};
    int packet_ok = 0;
    bool mac_good = true;
    for(int i = 0; i < 5 && mac_good; i++)
    {
        if(mac_ok[i] != mac->da_address[i] )
            mac_good = false;
    }
    
    if(mac_good)
    {       
    fwrite(data_packet,sizeof(u_char),sizeof(data_packet),file);            
    }
        
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2013, 16:19
Ответы с готовыми решениями:

Преобразование указателя на C-массив
Добрый день. Есть функции:template&lt;int N&gt; constexpr void test1(const char...

Преобразование кода без указателя в код с использованием указателя
Правильно ли выполнил? Исходный код без указателя #include &lt;iostream&gt;...

Преобразование температуры с помощью указателя
#include &lt;cmath&gt; #include &lt;iostream&gt; using namespace std; void...

Преобразование указателя void к указателю на структуру
Здравствуйте! Можете объяснить эти строки в программе? int cmp(const void*...

Преобразование указателя из char в int и double
указатель sadr является типом char мне нужно перопределить его на типы на int и...

5
GuGo1991
269 / 263 / 146
Регистрация: 02.08.2012
Сообщений: 609
05.09.2013, 16:59 2
Цитата Сообщение от Abraziv__ Посмотреть сообщение
for(int i = 0; i < 5 && mac_good; i++)
В этой строчке массив будет на единицу меньше.
Надо i <= 5 или же i < 6
0
Somebody
2799 / 1610 / 251
Регистрация: 03.12.2007
Сообщений: 4,213
Завершенные тесты: 3
05.09.2013, 17:30 3
Цитата Сообщение от Abraziv__ Посмотреть сообщение
C++
1
data_packet = ( u_char * ) ( packet + 14 );
Тут всё правильно? При такой расстановке скобок это 14-й пакет, а не 14-й байт.
0
Abraziv__
3 / 3 / 2
Регистрация: 05.02.2013
Сообщений: 402
05.09.2013, 17:45  [ТС] 4
Разобрался уже. Да с циклом затупил малясь. Вот решение :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void dispatcher_handler(u_char *param,const struct pcap_pkthdr *header, const u_char *packet)
{       
    u_char mac_ok[6] = {6,5,4,3,2,1};
    bool mac_good = true;
    for(int i = 0; i < 6 && mac_good; i++)
    {
        if(packet[i] != mac_ok[i] )
            mac_good = false;
    }
    
    if(mac_good)
    {       
        fwrite(packet + 14,sizeof(const u_char),header->caplen - 14,file);          
    }
            
}
0
Somebody
2799 / 1610 / 251
Регистрация: 03.12.2007
Сообщений: 4,213
Завершенные тесты: 3
05.09.2013, 17:50 5
Цитата Сообщение от Abraziv__ Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
    bool mac_good = true;
    for(int i = 0; i < 6 && mac_good; i++)
    {
        if(packet[i] != mac_ok[i] )
            mac_good = false;
    }
    
    if(mac_good)
C++
1
if (memcmp(packet, mac_ok, sizeof(mac_ok)) == 0)
?
0
Abraziv__
3 / 3 / 2
Регистрация: 05.02.2013
Сообщений: 402
05.09.2013, 18:33  [ТС] 6
Так быстрее?

Добавлено через 13 минут
В общем спасибо огромное всем за помощь.
0
05.09.2013, 18:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2013, 18:33

Преобразование указателя одного типа в указатель другого
Помоги пожалуйста составить программу: Преобразовать указатель одного типа в...

Проверить правильность преобразования указателя - преобразование из void*
Есть один абстрактний и один не абстрактний клас. В виртуальний метод...

Преобразование типа или преобразование типа указателя ?
Добрый день. Помогите пожалуйста понять что делает вот эта команда: out.write...


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

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

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