Программинг  Форум для тем связанных с программированием  
	 
	
	
	
	
		
		 
	
	
	
	
	 
 
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			10.12.2011, 17:22
			
							
		 
		
			 
			#1  
			
		 
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 27.10.2011
				Адрес: Харьков
				
				
					Сообщений: 106
				
				 
	Сказал Спасибо: 24
	
		
			
				Имеет 11 спасибок в 7 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
				 
				struct NetworkPacket 
			 
			 
			
		
		
		
		struct NetworkPacket
{
    unsigned char id, _padding1, exid, _padding2;
    unsigned short size, _padding3;
    unsigned char * data;
};
id, exid - айди пакета.
size - размер пакета.
data - данные? как их получить?
_padding - что это?
	Код:
	wsprintfA(buf, "Packet id=0x%x, size=0x%x, data=%x", packet->id, packet->size, packet->data); 
 вот так в лог пишется только семь байт...
 
		
	
		
		
		
		
		
		
		
		
		
	
	 
 
	
		 
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			10.12.2011, 17:36
			
							
		 
		
			 
			#2  
			
		 
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 23.09.2009
				
				
				
					Сообщений: 1,232
				
				 
	Сказал Спасибо: 119
	
		
			
				Имеет 172 спасибок в 134 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			 
			
		
		
		
		
	delphi Код:
	PNetworkPacket = ^TNetworkPacket;
  TNetworkPacket = packed  record 
    id: byte ;  // ID пакета 
    res: byte ; // тут ничего нужного нет 
    id2: Smallint ; // второй ID если есть 
    size: Smallint ; // размер данных 
    res2: Smallint ;
    data: array  of  byte ; // указатель на данные 
  end ;
 
  
		
	
		
		
		
		
		
		
			
				__________________ 
				Н а ч а л о .  
			
		
		
		
		
		
		
	
	 
 
	
		 
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			10.12.2011, 17:44
			
							
		 
		
			 
			#3  
			
		 
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 13.10.2009
				
				
				
					Сообщений: 665
				
				 
	Сказал Спасибо: 38
	
		
			
				Имеет 172 спасибок в 108 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			 
			
		
		
		
		
	Цитата:
	
	
		
			
				
					Сообщение от 
Elecktron 
					 
				 
				struct NetworkPacket
{
    unsigned char id, _padding1, exid, _padding2;
    unsigned short size, _padding3;
    unsigned char * data;
};
id, exid - айди пакета.
size - размер пакета.
data - данные? как их получить?
_padding - что это?
	Код:
	wsprintfA(buf, "Packet id=0x%x, size=0x%x, data=%x", packet->id, packet->size, packet->data); 
 вот так в лог пишется только семь байт...
 
			
		 
	 
	
 _padding это мусор
data - данные? как их получить?
unsigned char * data;
data это указатель (адресс) где лежат твои данные размером size
for (int i=0;i<size;i++)
{
   printf("%x  ",data[i]);//выводим по байту
   или
   printf("%x  ",*data[i]);//выводим по байту
}
синтаксис си по указателям не оч помню
 
		
	
		
		
		
		
		
		
			
				__________________
				каждый раз, когда ты пишешь int i вместо short i, сотни пользователей вынуждены докупать планку памяти
служба поддержки 4gay - ICQ 642274822 
 
			 
		
		
		
		
		
		
	
	 
 
	
		 
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	
		
			
				
					За это сообщение Morfik нажился спасибкой от: 
				
				
				
			 
			 
		 
	
  
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			10.12.2011, 19:58
			
							
		 
		
			 
			#4  
			
		 
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 27.10.2011
				Адрес: Харьков
				
				
					Сообщений: 106
				
				 
	Сказал Спасибо: 24
	
		
			
				Имеет 11 спасибок в 7 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			 
			
		
		
		
		пробую так: 
   for (int i=0;i<packet->size;i++) 
   { 
    wsprintfA(buf, "",packet->data[i]); 
    "функция сохранения в файл"(buf); 
   } 
сохраняет какуюто невменяемую билиберду: 
 
Packet id=0x0, size=0xb7, data=6b636150 
Packet id=0x1, size=0xf, data=6b636150
		
	
		
		
		
		
		
		
		
		
		
	
	 
 
	
		 
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			10.12.2011, 20:23
			
							
		 
		
			 
			#5  
			
		 
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 13.10.2009
				
				
				
					Сообщений: 665
				
				 
	Сказал Спасибо: 38
	
		
			
				Имеет 172 спасибок в 108 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			 
			
		
		
		
		wsprintfA(buf, "",packet->data[i]); 
     
а указать в каком виде сохраняем... 
   wsprintfA(buf, "%x",packet->data[i]); 
 
а может и ваще надо  wsprintfA(buf, "%x",LPVOID(DWORD(packet->data)+i)); 
 
погугли работу с указателями, главной пойми packet->data это адресс в памяти где лежит содержимое пакета
		
	
		
		
		
		
		
		
			
				__________________
				каждый раз, когда ты пишешь int i вместо short i, сотни пользователей вынуждены докупать планку памяти
служба поддержки 4gay - ICQ 642274822 
 
			 
		
		
		
		
		
		
	
	 
 
	
		 
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	
		
			
				
					За это сообщение Morfik нажился спасибкой от: 
				
				
				
			 
			 
		 
	
  
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			10.12.2011, 21:14
			
							
		 
		
			 
			#6  
			
		 
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 27.10.2011
				Адрес: Харьков
				
				
					Сообщений: 106
				
				 
	Сказал Спасибо: 24
	
		
			
				Имеет 11 спасибок в 7 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			 
			
		
		
		
		спасибо заработало.
я провтыкал %х 
осталось "нули повыравнивать", чтобы в логе красиво было..
	Код:
	   for (int i=0;i<packet->size;i++)
   {
    wsprintfA(buf, "%x",packet->data[i]);
    "функция сохранения в файл"(buf);
    "функция сохранения в файл"(" ");
   } 
 кусок лога:
	Код:
	Packet id=0xfe, size=0x7c
7 0 0 0 1 0 0 0 67 0 6c 0 75 0 64 0 69 0 6f 0 0 0 2 0 0 0 64 0 69 0 6f 0 6e 0 0 0 3 0 0 0 67 0 69 0 72 0 61 0 6e 0 0 0 4 0 0 0 6f 0 72 0 65 0 6e 0 0 0 5 0 0 0 61 0 64 0 65 0 6e 0 0 0 6 0 0 0 69 0 6e 0 6e 0 61 0 64 0 72 0 69 0 6c 0 65 0 0 0 7 0 0 0 67 0 6f 0 64 0 61 0 72 0 64 0 0 0 0 0 
  
		
	
		
		
		
		
		
		
		
		
		
	
	 
 
	
		 
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			14.12.2011, 17:02
			
							
		 
		
			 
			#7  
			
		 
	
 
	
			
            
			
			Пользователь
			
			
		
			
				
			
			
			
				 
				Регистрация: 18.09.2010
				Адрес: Киев
				
				
					Сообщений: 70
				
				 
	Сказал Спасибо: 9
	
		
			
				Имеет 10 спасибок в 6 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			 
			
		
		
		
		
	Код:
	#pragma pack(push, 1)
struct NetworkPacket
{
    unsigned char Id, _padding1, exid, _padding2;
    unsigned short size, _padding3;
    unsigned char* data;
};
#pragma pack(pop) 
 char* data - УКАЗАТЕЛЬ на данные
	Код:
	void __stdcall NetworkPacketDump( NetworkPacket* np )
{
	int Id = np->Id;
	switch (Id)
	{
		case 0x19: //npcHtmlMessage
		{
			DumpHtml((NpcHtmlMessage *)(np->data));
		}
		case 0x0C: //NpcInfo
		{
			ParseNpc((NpcInfo *)(np->data));
		}
	}
	return;
} 
  
		
	
		
		
		
		
		
		
			
				__________________ 
				Все относительно...
			
		
		
		
		
		
		
	
	 
 
	
		 
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	 
	
		 	
	 
 
		
 
	
		
 
  
	Опции темы 
	
 
	
	
	
	
	
	
	 
	
 
	Опции просмотра 
	
 
	
	
	
	
	
	
		  Линейный вид  
		
		
	 
	
	
	
	 
	
	
 
	
		
	
		 
		Ваши права в разделе
	 
 
 
	
		
		Вы не можете  создавать темы
		Вы не можете  отвечать на сообщения
		Вы не можете  прикреплять файлы
		Вы не можете  редактировать сообщения
		 
		
		
		
		
		HTML код Выкл. 
	  
 
 
	 
	
		
	 
 
Часовой пояс GMT +4, время: 14:22 .
		 	
	 
 
	
	
	
	vBulletin style designed by 
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: 
zCarot 
	
 
 
 
 
 
 
 
  
 
 
 
Вы хотите чувствовать себя в безопасности? чоп  Белган обеспечит её!