var
FrameBuf:array[0..9] of byte;//byte不能更改;
begin
If lstDEVMAC.Items.Text= '' Then exit;
FrameBuf[0]:=Midstr(lstDEVMAC.Items.Text, 1, 2);// 'PC MAC
FrameBuf[1]:=Midstr(lstDEVMAC.Items.Text, 3, 2);// 'PC MAC
FrameBuf[2]:=Midstr(lstDEVMAC.Items.Text, 5, 2);// 'PC MAC
FrameBuf[3]:=Midstr(lstDEVMAC.Items.Text, 7, 2);// 'PC MAC
FrameBuf[4]:=Midstr(lstDEVMAC.Items.Text, 9, 2);// 'PC MAC
FrameBuf[5]:=Midstr(lstDEVMAC.Items.Text, 11, 2);// 'PC MAC
end;
其中lstDEVMAC:='090C2FF0003';
FrameBuf[ii]想要结果如下:
FrameBuf[ii]:=$C2;
请教如何将字符串的值变成十六进制时再附给FrameBuf[ii];
FrameBuf:array[0..9] of byte;//byte不能更改;
begin
If lstDEVMAC.Items.Text= '' Then exit;
FrameBuf[0]:=Midstr(lstDEVMAC.Items.Text, 1, 2);// 'PC MAC
FrameBuf[1]:=Midstr(lstDEVMAC.Items.Text, 3, 2);// 'PC MAC
FrameBuf[2]:=Midstr(lstDEVMAC.Items.Text, 5, 2);// 'PC MAC
FrameBuf[3]:=Midstr(lstDEVMAC.Items.Text, 7, 2);// 'PC MAC
FrameBuf[4]:=Midstr(lstDEVMAC.Items.Text, 9, 2);// 'PC MAC
FrameBuf[5]:=Midstr(lstDEVMAC.Items.Text, 11, 2);// 'PC MAC
end;
其中lstDEVMAC:='090C2FF0003';
FrameBuf[ii]想要结果如下:
FrameBuf[ii]:=$C2;
请教如何将字符串的值变成十六进制时再附给FrameBuf[ii];
这个不好用吗?
FrameBuf[0] := StrToInt('$' + midstr(lstDEVMAC,2,2));
FrameBuf[1] := StrToInt('$' + midstr(lstDEVMAC,4,2));
FrameBuf[2] := StrToInt('$' + midstr(lstDEVMAC,6,2));
FrameBuf[3] := StrToInt('$' + midstr(lstDEVMAC,8,2));
FrameBuf[4] := StrToInt('$' + midstr(lstDEVMAC,10,2)); 如果要取出$C2,那么下标就必须从2开始,并且不可能有FamBuf[5]存在,字符串总共才11位,除非补0。