char a[100],s,ss;int n1;a[0]=0x02;
a[1]=0x03;
a[2]=0x21;
a[3]=0x03;
a[4]=10;s=a[1]+a[2]+a[3]+a[4];CString s9;s9.Format("%.2X",s);MessageBox(s9);ss=~s;ss=ss+1;a[5]=ss;
a[6]=0x03;

CString s1;

s1.Format("%.2X",a[1]);char c[100];c[0]=0x02;
c[1]=s1.GetAt(0);
c[2]=s1.GetAt(1);
s1.Format("%.2X",a[2]);c[3]=s1.GetAt(0);
c[4]=s1.GetAt(1);
s1.Format("%.2X",a[3]);
c[5]=s1.GetAt(0);
c[6]=s1.GetAt(1);
s1.Format("%.2X",a[4]);
c[7]=s1.GetAt(0);
c[8]=s1.GetAt(1);
s1.Format("%.2X",a[5]);
s1=s1.Right(2);c[9]=s1.GetAt(0);
c[10]=s1.GetAt(1);c[11]=0;
CString s2;
s2=&c[1];
MessageBox(s2);
这些都是什么意思啊?请对每行做出详细注释,急啊,高手们请指教啊

解决方案 »

  1.   

    char a[100],s,ss;int n1;//0x 表示16进制, 没有表示10进制
    a[0]=0x02;
    a[1]=0x03;
    a[2]=0x21;
    a[3]=0x03;
    a[4]=10;//
    s=a[1]+a[2]+a[3]+a[4];CString s9;//若十六进制整数s不满2位则在最高为前面补0;
    //  若s大于等于2位则形式不变
    s9.Format("%.2X",s);MessageBox(s9);//~按位取反
    ss=~s;ss=ss+1;a[5]=ss;
    a[6]=0x03;CString s1;s1.Format("%.2X",a[1]);char c[100];c[0]=0x02;
    //字符窜第0个字符
    c[1]=s1.GetAt(0);
    c[2]=s1.GetAt(1);
    s1.Format("%.2X",a[2]);c[3]=s1.GetAt(0);
    c[4]=s1.GetAt(1);
    s1.Format("%.2X",a[3]);
    c[5]=s1.GetAt(0);
    c[6]=s1.GetAt(1);
    s1.Format("%.2X",a[4]);
    c[7]=s1.GetAt(0);
    c[8]=s1.GetAt(1);
    s1.Format("%.2X",a[5]);
    s1=s1.Right(2);c[9]=s1.GetAt(0);
    c[10]=s1.GetAt(1);c[11]=0;
    CString s2;
    s2=&c[1];
    MessageBox(s2);