解决方案 »
- [Error] report_cur.pas(157): Incompatible types: 'String' and 'TStrings'
- 关于ListView显示上千图片的问题。
- 请问如何给窗体添加Frame控件?
- 南漂一族 挣百万 回老家
- 存贮过程中的Output参数如何取得其值?
- 拜拖不吝赐教!
- 请问哪里有安装制作下载?
- 请问:一个初学 DELPHI 者用 DELPHI6.0好,还是用DELPHI5.0好?
- 怎样读出MEMO中的长字符串?用流?
- Delphi 6 附带的InstallShield Express 3 如何获得中文支持
- 求助 delphi代码翻译为java代码
- 一个线程已结束,为啥还能检测到?
16进制范围:0--------9 +10,A,B,C,D,E,F
上位机啊,嘿嘿,很有意思的。以前写的:
procedure TForm1.btn3Click(Sender: TObject);
var
i,k,t:integer;
j:Extended ;
s,st:string;
begin
st:='0000000000000000';
//self.chklst1.Header
self.chklst1.MultiSelect:=True;
//ShowMessage(IntToStr(self.chklst1.Items.count));
self.mmo2.Clear;
//self.chklst1.SelectAll;
j:=0; k:=0;t:=0; for i:=0 to self.chklst1.Items.Count-1 do
begin
k:=i div 8;
t:=((Self.chklst1.Items.Count-1-i) mod 8)+k*8+1; //二进制
if self.chklst1.Checked[i] then
begin
self.chklst1.Selected[i]:=True;
s:=st;
s[t]:='1';
st:=s;
self.STBinary.Caption:=Copy(st,1,4)+'_'+copy(st,5,4)+'_'+copy(st,9,4)+'_'+copy(st,13,4);
end; if self.chklst1.Checked[i] then
begin //十进制
if not self.chklst1.Checked[7] then
begin
j:=j+Power(2,(16-t));
end
else
begin
j:=j-Power(2,(16-t))-2;
end; //八进制 //十六进制 //输出位置
s:='';
s:=inttostr(16-((Self.chklst1.Items.Count-1-i) mod 8)-k*8-1);
//s:='M'+inttostr(3+(i div 8))+'.'+inttostr((i mod 8))+'=1';
self.mmo2.Lines.Add(s);
//ShowMessage(self.chklst1.Items[i]);
end;
s:=IntToStr(round(j));
self.STInt.Caption:=format('%.5d',[Round(j)]);
self.STWord.Caption:=IntToHex(round(j),4); end;
end;原理一样,随便转换。
IntToHex 把int(进制整数)变成16进制。
IntToHex(round(j),4):将j(10进制整数)的值转换为4个字节的16进制整数(字符串表示)。
按照你写的我理解,应该是这样写:var
i:integer;
begin
i:= StrtoInt6(SeedData);
//i为把seeddata转换过来的10进制整数,假设seeddata表示的是16进制字符串
i:=2*(i-1);//假设你需要操作,这里面你随便了。
seeddata:='$'+inttohex(i,4);//在把10进制的i转换为16进制的字符串。
end;
我也是这样理解的啊!
ustczjr:你是大哥,啥叫:“十六进制整数”???俺不懂,晕了啊!好歹多少还知道点plc,也知道点上位机,没听说过还有“十六进制整数”类型的啊!几乎所有的进制转换,都是字符串->整数或者整数->字符串。
上位机接收的数据,一般是放到一个字符串中,基本上都是用16进制表示的整数,直接strtoint就可以了,运算过后,如果需要传递数据,发送的也是一个字符串,就是上面我写的。
说真的,我非常同意楼上的说法,恕我孤弱寡闻,不要字符串,不显示出来,哪来的“十六进制”?全部都是二进制,一楼说的!