Большинство платформ будут выравнивать и дополнять структуры так, чтобы они начинались и заканчивались точно на границе слова.Это сделано для повышения производительности памяти.
Если вы работаете в Windows, вы можете установить собственное выравнивание.В вашем случае вы хотите выровнять по одному байту, так что сделайте это:
#pragma pack( push, 1 )
typedef struct zsSysVersionMsg_tag
{
WORD cmd;
BYTE len;
} zsSysVersionMsg_t;
#pragma pack( pop )