Показать сообщение отдельно

  #2  
Старый 19.02.2006, 13:59
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

Начнем с того что описание структуры будем писать так
Код:
typedef struct
{
        int num;
        char msg[8]; // а не char[8] msg
} packet;
только тут байтов - 8 + sizeof( num ) = 8 + 4 = 12 а буфер у тебя 15.
Но первые 12 байт всеравно можно загнать, тоесть если я тебя понял, как бы наложить на структуру.
Непосредственное копирование памяти:

Код:
packet p;
memcpy( &p, buff, sizeof( buff ) );
Тогда можно будет обращаться так
p.num

Или просто ставим указатель на структуру на адрес буфа
Код:
packet *p; // как указатель на структуру packet
p = (packet*)buff;
Тогда можно будет обращаться так
p->num

В твоем случае в num получается 1049088 или 0x100200
Вопрос ты задал довольно корректно, что странно для форума.античат.ру

тест:

Код:
#include <stdio.h>
#include <windows.h>

typedef struct
{
        int num;
        char msg[8];
} packet;

char buff[] = {
        0x00, 0x02, 0x10, 0x00, 0x00,
        0x00, 0x02, 0x10, 0x00, 0x00,
        0x00, 0x02, 0x10, 0x00, 0x00
};

int main( int argc, char* argv[] )
{
	// вариант 1
	packet *p = (packet*)buff;
	printf( "p->num=%d\n", p->num );

        // вариант 2
	packet p2;
	memcpy( &p2, buff, sizeof( buff ) );
	printf( "p2.num=%d\n", p2.num );
	
	return 0;
}

Последний раз редактировалось KEZ; 19.02.2006 в 14:16..
 
Ответить с цитированием