怎样将串口发送的十六进制数据显示在memo上,比如说十六进制数据是00 00 01 65

解决方案 »

  1.   

    IntToHex
    假设你的串口数据以Byte类型的数组CommData存取,现在收到的长度为len则:
    rstStr:string[200];   //假设你收到的字符少于100字节,
    tmpStr:string[2];
    idx:integer;
    rstStr[0]:=len*2;for idx:=1 to len do
    begin
      tmpStr:=IntToHex(CommData[idx],2);   //每字节成两个字符
     rstStr[idx*2-1]:=tmpStr[1];
      rstStr[idx*2]:=tmpStr[2];
    end;如果你的CommData是个string类型的,则以下:
    len:=length(Commdata);
    rstStr[0]:=len*2;
    for idx:=1 to len do
    begin
      tmpStr:=IntToHex(Ord(CommData[idx]),2);   //Ord取得一个序号
     rstStr[idx*2-1]:=tmpStr[1];
      rstStr[idx*2]:=tmpStr[2]; 
    end;
      

  2.   

    好像rstStr[0]:=len*2整型和string[]不能实现,提示char和integer是incompitable types,改成rstStr[0]:=IntTostr(len*2)也不行,提示char和string是incompitable types。
      

  3.   

    如此定义:
    rstStr:string[200];
    不要这样定义:
    rstStr:string;
      

  4.   

    请仔细看我的程序。如果你的数据是字节数组,而你用
    rstStr:string;
    定义,则可以用以下代码(不建议)rstStr:='';
    for idx:=1 to len do
    begin
      tmpStr:=IntToHex(CommData[idx],2);   //每字节成两个字符
     rstStr:=rstStr+tmpStr;
    end;
      

  5.   

    我看错了,其实你自己应当能改正我的错误rstStr[0]:=Chr(len*2)就行了。