读书人

怎么将一个2字节的unsigned int 劈成两

发布时间: 2013-01-28 11:49:56 作者: rapoo

如何将一个2字节的unsigned int 劈成两个1字节?
从别处得到一个2字节的unsigned int型数据, 需将它分别存进两个 char变量.
有什么直接的方法吗?
[解决办法]


unsigned int a=1000;
char b[2];
*((unsigned int*)b)=a;

或更简单:

unsigned int a=1000;
char b[2];
b[0]=a%256;
b[1]=a/256;




你确定你机器上的unsigned int是两个字节?

[解决办法]

unsigned int a=1000;
char b[2];
b[0] = a;
b[1] = a>>8;
[解决办法]

union uc
{
unsigned int a;
char b[2];
};

uint放入a,取b
[解决办法]
unsigned short int si=0x12AB;
char *p0,*p1,c0,c1;
char cc[2];
p0=(char *)&si;
p1=((char *)&si)+1;
c0=((char *)&si)[0];
c1=((char *)&si)[1];
memcpy((void *)cc,&si,2);
printf("%02X %02X %02X %02X %02X %02X\n",
(unsigned char)*p0,
(unsigned char)*p1,
(unsigned char)c0,
(unsigned char)c1,
(unsigned char)cc[0],
(unsigned char)cc[1],
);

读书人网 >C++

热点推荐