15,979
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
char hexstr[]="19 02 00 01 00 01 06 01 50 70 7D 00 00 FF 00 00 00 00 00 00 00 00 00 00 00 0A 00 00 00 00 00 00 00 00 00 01 78 CA 00 00 14 86 ";
unsigned char hexval[256];
char *p;
int i,v,n,r;
unsigned short int usi;
unsigned int ui;
int main() {
i=0;
p=(char *)hexstr;
while (1) {
r=sscanf(p,"%2x%n",&v,&n);
if (1==r) {
hexval[i]=(unsigned char)v;
i++;
if (i>=256) break;
p+=n;
} else if (0==r) {
p++;
} else break;
}
n=i;
for (i=0;i<n;i++) printf("%02X ",hexval[i]);
printf("\n");
//比如hexval[0..1]组成一个unsigned short int
usi=*(unsigned short int *)&hexval[0];
printf("usi=0x%04hX=%hd\n",usi,usi);
//比如hexval[2..5]组成一个unsigned int
ui=*(unsigned int *)&hexval[2];
printf("ui=0x%08X=%d\n",ui,ui);
//...
return 0;
}
//19 02 00 01 00 01 06 01 50 70 7D 00 00 FF 00 00 00 00 00 00 00 00 00 00 00 0A 00 00 00 00 00 00 00 00 00 01 78 CA 00 00 14 86
//usi=0x0219=537
//ui=0x01000100=16777472
//