#include <string.h>
typedef struct NetworkFrame_
{
unsigned ack : 1;
unsigned tseq : 7;
} NetworkFrame;
void main(void)
{
NetworkFrame nf;
NetworkFrame * pnf;
char* test;
nf.ack = 1;
nf.tseq = 12345678;
test = (char*)&nf; // Here you can't the address not the object itself!
pnf = (NetworkFrame *) test;
memcpy(&nf, test, sizeof(NetworkFrame));
printf("%x", test);
system("PAUSE");
}
NetworkFrame nf;
int i = 0;
for (i = 0; i < sizeof(NetworkFrame); ++i) {
printf("%02x ", ((unsigned char*) &nf)[i]);
}
/* OR even : */
NetworkFrame nf;
unsigned char *ptr = &nf;
int i = 0;
for (i = 0; i < sizeof(NetworkFrame); ++i, ++ptr) {
printf("%02x ", *ptr);
}
#include <string.h>
typedef struct NetworkFrame_
{
unsigned ack : 1;
unsigned tseq : 7;
} NetworkFrame;
int main(void)
{
NetworkFrame nf;
NetworkFrame * pnf;
unsigned char* test;
int i = 0;
nf.ack = 1;
nf.tseq = 2;
test = (unsigned char*)&nf;
pnf = (NetworkFrame *) test;
memcpy(&nf, test, sizeof(nf));
for (i = 0; i < sizeof(nf); ++i)
{
printf("%02x ", test[i]);
}
system("PAUSE");
return 0;
}
#include <string.h>
typedef struct NetworkFrame_
{
unsigned ack : 1;
unsigned tseq : 7;
unsigned char payload[3];
} NetworkFrame;
int main(void)
{
NetworkFrame nf;
NetworkFrame *pnf;
unsigned char* test;
int i = 0;
nf.ack = 1;
nf.tseq = 2;
nf.payload[0] = 0;
nf.payload[1] = 0;
nf.payload[2] = 0;
nf.payload[3] = 0;
test = (unsigned char*)&nf;
pnf = (NetworkFrame *) test;
memcpy(&nf, test, sizeof(nf));
for (i = 0; i < sizeof(nf); ++i) {
printf("%04x ", test[i]);
}
system("PAUSE");
return 0;
}
#include <string.h>
#include <stddef.h>
#pragma pack(1)
typedef struct NetworkFrame_
{
unsigned ack : 1;
unsigned tseq : 7;
unsigned char payload[3];
} NetworkFrame;
int main(void)
{
NetworkFrame nf;
NetworkFrame *pnf;
unsigned char* test;
int i = 0;
nf.ack = 1;
nf.tseq = 2;
nf.payload[0] = 0;
nf.payload[1] = 0;
nf.payload[2] = 0;
nf.payload[3] = 0;
test = (unsigned char*)&nf;
pnf = (NetworkFrame *) test;
memcpy(&nf, test, sizeof(nf));
for (i = 0; i < sizeof(nf); ++i) {
printf("%04x ", test[i]);
}
system("PAUSE");
return 0;
}
Open in new window