Здравствуйте, Vamp, Вы писали:
V>Здравствуйте, Kven, Вы писали:
K>>Есть некий файл, он заливается в битовый буффер, в файле хранятся данные разных типов
K>>DWORD int CHAR и float. Нужно данные float вытащить из битового буффера отредактировать и
K>>запихнуть обратно.
V>Очень просто.
V>
V>V>byte b[BUFFER_SIZE];
V>//b is initialized
V>//....
V>float *pfNum;
V>pfNum=(float *)(b+nOffset); //nOffset - offset in byte array of our number
V>*pfNum=*pfNum+2003;
V>
V>
Так будут проблемы с выравниванием. То есть, если в буфере хранится byte а потом float (nOffset нечётный), то мы получим указатель на float по нечётному адресу.
Так что извлекать нужно так:
float a;
memcpy(&a,b+nOffset,sizeof(float));
обратно записывать — аналогично.
... << RSDN@Home 1.0 beta 6a >>