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;
请仔细看我的程序。如果你的数据是字节数组,而你用 rstStr:string; 定义,则可以用以下代码(不建议)rstStr:=''; for idx:=1 to len do begin tmpStr:=IntToHex(CommData[idx],2); //每字节成两个字符 rstStr:=rstStr+tmpStr; end;
假设你的串口数据以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;
rstStr:string[200];
不要这样定义:
rstStr:string;
rstStr:string;
定义,则可以用以下代码(不建议)rstStr:='';
for idx:=1 to len do
begin
tmpStr:=IntToHex(CommData[idx],2); //每字节成两个字符
rstStr:=rstStr+tmpStr;
end;