Имя пользователя:
Пароль:
 

Название темы: запись структур в VС++
Показать сообщение отдельно

Пользователь


Сообщения: 135
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ну ivank Как всегда прав.
Вот небольшой пример.
Две функции для чтения и записи 32-разрядного целого.
Код: Выделить весь код
__int32 ReadINT(void* pS)
{
  unsigned char* p = (unsigned char*)pS;
  __int32 res = p[3];
  res = (res<<8) | p[2];
  res = (res<<8) | p[1];
  res = (res<<8) | p[0];
  return  res;
}

void WriteINT(__int32 V, void* pD)
{
  unsigned char* p = (unsigned char*)pD;
  *p++ = V; V>>=8;
  *p++ = V; V>>=8;
  *p++ = V; V>>=8;
  *p   = V;
}
Как использовать. Пример:
Например по смещению 38 надо считать число, прибавить 5 и записать назад.
Код: Выделить весь код
char Buf[SIZE]; // Это твой буфер

int a = ReadINT(&Buf[38]);
a += 5;
WriteINT(a, &Buf[38]);
А вообще если тебе действительно не нужна портабельность то не заморачивайся с этим.

Отправлено: 02:23, 02-03-2004 | #16

Название темы: запись структур в VС++