怎么将MSCOMM得到的数据Byte数组转化为是十进整型?下位机发送方式为16进制,以下为部分代码
void CSendtestDlg::OnComm() 
{
VARIANT variant_inpt;
COleSafeArray safearray_inpt;
long len,k;
Byte rData[2048];//设置BYTE数组
if (m_Comm.GetCommEvent()==2)//事件值为2,表示接收缓冲区内有字符
{
variant_inpt=m_Comm.GetInput();//读缓冲区
safearray_inpt=variant_inpt;//VARIANT型变量转化为COleSafeArray型变量
len=safearray_inpt.GetOneDimSize();//得到有效数据长度 for (k=0;k<len;k++)
safearray_inpt.GetElement(&k,rData+k);//转换为Byte数组

解决方案 »

  1.   

    if(m_Comm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
        {             ////////以下你可以根据自己的通信协议加入处理代码
    Sleep(20);
            variant_inp=m_Comm.GetInput(); //读缓冲区
            safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
            len=safearray_inp.GetOneDimSize(); //得到有效数据长度
            for(k=0;k<len;k++)
                safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
            for(k=0;k<len;k++) //将数组转换为Cstring型变量
            {
    RXDataBuffer[k]=rxdata[k];
                BYTE bt=*(char*)(rxdata+k); //字符型
                strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
                m_sRXData+=strtemp; //加入接收编辑框对应字符串 
            }
    dRXNetWeight = ((RXDataBuffer[4]-'0')*100000+(RXDataBuffer[5]-'0')*10000+(RXDataBuffer[6]-'0')*1000
    +(RXDataBuffer[7]-'0')*100+(RXDataBuffer[8]-'0')*10+(RXDataBuffer[9]-'0'))/pow(10,(RXDataBuffer[10]-'0'));
    }
      

  2.   

    这个是我转换成double的程序片段,楼主可以参考一下。
    将rData+k中的值送去'0'就是数值了,然后看它在哪一位来计算 
      

  3.   

    你好,下位机发送的也是数值,是将Byte数组中的值减去'0'吗