String 转 Byte类型 用什么方法函数?(20分)

  • 主题发起人 主题发起人 jmlwz
  • 开始时间 开始时间
J

jmlwz

Unregistered / Unconfirmed
GUEST, unregistred user!
如上:)
 
<br>StrToInt
 
上面的俩位,你们的方法不行呀!!!<br>var<br>&nbsp; ArBy:array[0..10] of byte;<br>&nbsp; i,j,ln,a:integer;<br>&nbsp; Temp:string;<br>&nbsp; begin<br>&nbsp; Temp:='AA 01 4A 02 10 F3';<br>&nbsp; ln:=length(trim(Temp));<br>&nbsp; i:=1;<br>&nbsp; j:=2;<br>&nbsp; a:=0;<br>&nbsp; while i&lt;ln*2 do<br>&nbsp; begin<br>&nbsp; &nbsp; ArBy[a]:= &nbsp;??? &nbsp;Temp+Temp[j]; &nbsp; &nbsp; &lt;&lt;&lt;&lt;&lt;&lt; 这里怎么转StrtoInt()不行运行错误<br>&nbsp; &nbsp; i:=i+3;<br>&nbsp; &nbsp; j:=i+1;<br>&nbsp; &nbsp; a:=a+1;<br>&nbsp; end;<br><br>如: &nbsp; ArBy[0]:=$AA;
 
var senddatas:string;<br>&nbsp; &nbsp; checkcode,i:integer;<br>begin<br>&nbsp; senddatas:=strpas(ICData);<br>&nbsp; sbuf[1]:=byte($fe);<br>&nbsp; sbuf[2]:=byte($fe);<br>&nbsp; sbuf[3]:=byte($68);<br>&nbsp; sbuf[4]:=byte($0B);<br>&nbsp; sbuf[5]:=byte($81);<br>&nbsp; sbuf[6]:=byte($00);<br>&nbsp; sbuf[136]:=byte($16);<br>&nbsp; checkcode:= (sbuf[4]+sbuf[5]) mod 256;<br>&nbsp; for i:= 1 to 128 do<br>&nbsp; begin<br>&nbsp; &nbsp; sbuf[i+6]:=StrToIntDef('$'+midstr(senddatas,i*2-1,2),0);<br>&nbsp; &nbsp; checkcode:=(checkcode+sbuf[i+6]) mod 256;<br>&nbsp; end;<br>&nbsp; sbuf[135]:=checkcode;<br>&nbsp; senddata(136);<br>&nbsp; result:=true;<br><br>懒得整理了,你自己看一下吧,应该没问题的。其中senddatas是字符串,sbuf是byte数组。
 
Re:jmlwz<br><br>这不是 string 转 byte 的问题,是 string 转 16进制的问题。<br>................................<br>while i&lt;ln*2 do<br>&nbsp;begin<br>&nbsp; &nbsp;ArBy[a]:= &nbsp;StrToInt('$'+ &nbsp;Temp+Temp[j]); &nbsp; &nbsp;// &lt;&lt;&lt;&lt;&lt;&lt; <br>&nbsp; &nbsp;i:=i+3;<br>&nbsp; &nbsp;j:=i+1;<br>&nbsp; &nbsp;a:=a+1;<br>&nbsp;end;<br>
 
采用Trunc(string)就可以了,但是,String在数字上不能大于255,否则会被截掉一部分。
 
接受答案,并分配积分<br>
 
多人接受答案了。
 
后退
顶部