请教VC怎样把从串口接收到的十六进制0A转成 00001010再截取每位的数据

解决方案 »

  1.   

    BYTE n = 0;
    sscanf("0A","%02X",&n);//n中为 0x0A
    或者自行计算取位,可以使用 & 位操作
    if(n & 0x80) ...第1位为1
    if(n & 0x40) ...第2位为1
    ...
    if(n & 0x08) ...第5位为1
    ...
    if(n & 0x02) ...第7位为1
    if(n & 0x01) ...第8位为1
      

  2.   

    BYTE byGet = 0x0A;
    int nGet[8];
    int i = 0;
    for (i=0; i<8; i++)
    {
        nGet[i] = (byGet>>i)&0x01;
    }CString sGet;
    sGet.Format("%d%d%d%d%d%d%d%d", 
    (byGet>>7)&0x01, 
    (byGet>>6)&0x01, 
    (byGet>>5)&0x01, 
    (byGet>>4)&0x01, 
    (byGet>>3)&0x01, 
    (byGet>>2)&0x01, 
    (byGet>>1)&0x01, 
    (byGet>>0)&0x01,);