Jump to content

  • Log In with Google      Sign In   
  • Create Account

Bit packing structs that are non byte aligning...


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 gimp   Members   -  Reputation: 142

Like
Likes
Like

Posted 07 May 2000 - 03:20 AM

I''ve created this ... -thing- based on some vague comments I recieved on a newsgroup. I was wondering if any of guy bit guru''s would mind helping me get it in to a compliling state: #pragma pack( push, single_bit_packing ) #pragma pack(1) struct turretdirection_t { int smallerint TurretAngle:9; int smallerint TurretHeight:7; }; #pragma pack( pop, single_bit_packing ) It''s meant to allow me to store two values in two bytes but where one is 9 bit''s long and the other 7 bits long. Something is definatly wrong with that smallerint thing, and the colon-number is something I can''t seem to find in my manuals. Once I work this out then all I have to do is work out how to put data in and get data out of it many thanks chris

Sponsor:

#2 SiCrane   Moderators   -  Reputation: 9662

Like
Likes
Like

Posted 07 May 2000 - 10:19 PM

This is one of those things that you''d really have to say which compiler you''re using before any of us could help. Really, though, I think you''d be much better off just creating a class and manually doing bitshift operations.

#3 Kylotan   Moderators   -  Reputation: 3338

Like
Likes
Like

Posted 08 May 2000 - 02:38 AM

I think:

struct turretdirection_t
{
unsigned short TurretAngle:9;
unsigned short TurretHeight:7;
};

Would work fine... the colon:number stuff is standard, look up ''bitfields'' in your docs.

#4 Anonymous Poster_Anonymous Poster_*   Guests   -  Reputation:

Likes

Posted 09 May 2000 - 12:28 PM

Your working at much to low level for starting out programming a multiplayer game. Bit packing is a compression technique which usually is best left for later in the developemnt cycle where you can better make the decesion which fields need to be packed and how. Starting out with these built in bit packing structs will only limit you later and as well as obfucsate the network code design. I suggest working on a simple generic packet serailizer code. Given a packet class turn it into a stream of data which can be sent over the network and recomposed on the other side. It''s not trivial to design a flexible system, and you''ll learn alot. Good Luck.

-ddn

#5 gimp   Members   -  Reputation: 142

Like
Likes
Like

Posted 10 May 2000 - 01:14 PM

Thanks for the advice and solutions guys. I probably AM pushing things a litte to far right now. For the majority of my other numbers I''m using whole bytes.

Reason I''m poushing this now is mostly preplanning. Towards the end of the project just about all numbers will be non standard. This onle example is mostly so my code can have a single working example for me to clone later on.

The struct is wrapped by a class that handles certain things, so I have say a ''Movement'' class that manages movement messages and the data structures therein. I''m not too worried about other code as the class hides the implementation of the data structure.

Essentially I have the ''bitfield'' class operating already the structs I was asking about was just going to allow me to order the bits to span byte boundries so when it come time to form(serialize) the winsock string I can just memcopy the struct in to the string...well thats the plan anyway.

Again thanks..

Chris




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS