D
debug
Ниже я задавал подобный вопрос - незнание это плохо - но не нашёл ответов на следующий вопрос:
Имеется код:
Резхультаты к сожалению не ожидаемые мной.
Что я ожидал:
sg->status_t=0x14
sg->gNumber=0x0001
sg->cNumber=0x01
sg->info=0x0000
sg->panel=0x0001
что получаеться на самом деле:
sg->status_t=0x14
sg->gNumber=257
sg->cNumber=0
sg->info=256
sg->panel=..
Могу конечно ошибиться - но факт тот - что результат сильно отличается от ожидаемого.
Что здесь может быть - выравнивание или сетевой порядок байт (похоже чем то), хотя думаю последнее тут не причём.
Имеется код:
Код:
struct SIGNAL_STATUS {
char status_t;
unsigned short gNumber;
unsigned char sNumber;
unsigned short info;
unsigned short panel;
};
char temp[16];
memset(temp, 0, 16);
temp[0]=0x14;
temp[1]=0;
temp[2]=0x01;
temp[3]=0x01;
temp[4]=0;
temp[5]=0;
temp[6]=0;
temp[7]=0x01;
SIGNAL_STATUS *sg=(SIGNAL_STATUS*)temp;
sg->status_t;
sg->gNumber;
sg->sNumber;
sg->info;
sg->panel;
Резхультаты к сожалению не ожидаемые мной.
Что я ожидал:
sg->status_t=0x14
sg->gNumber=0x0001
sg->cNumber=0x01
sg->info=0x0000
sg->panel=0x0001
что получаеться на самом деле:
sg->status_t=0x14
sg->gNumber=257
sg->cNumber=0
sg->info=256
sg->panel=..
Могу конечно ошибиться - но факт тот - что результат сильно отличается от ожидаемого.
Что здесь может быть - выравнивание или сетевой порядок байт (похоже чем то), хотя думаю последнее тут не причём.