本帖最后由 ustczjr 于 2012-04-12 10:41:10 编辑

解决方案 »

  1.   

    十进制范围:0--------9
    16进制范围:0--------9 +10,A,B,C,D,E,F
      

  2.   

    function   IntToHex(Value:   Integer;   Digits:   Integer):   string;
    上位机啊,嘿嘿,很有意思的。以前写的:
    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;原理一样,随便转换。
      

  3.   

    http://www.cnblogs.com/ywangzi/archive/2011/12/22/2297500.htmlhttp://apps.hi.baidu.com/share/detail/33715335我替你百度的,但不知哪个是你想要的。虽然你问题不是很明确,但这两个说明很明了。
      

  4.   

    好吧,让我这个老菜鸟跟你这个新菜鸟说一下,狂汗!!!
    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;
      

  5.   

    好吧,这么说,如何把十进制整数转换为十六进制整数?IntToHex 是把int(十进制整数)变成16进制字符串,不是我想要的啊~
      

  6.   


    我也是这样理解的啊!
    ustczjr:你是大哥,啥叫:“十六进制整数”???俺不懂,晕了啊!好歹多少还知道点plc,也知道点上位机,没听说过还有“十六进制整数”类型的啊!几乎所有的进制转换,都是字符串->整数或者整数->字符串。
    上位机接收的数据,一般是放到一个字符串中,基本上都是用16进制表示的整数,直接strtoint就可以了,运算过后,如果需要传递数据,发送的也是一个字符串,就是上面我写的。
    说真的,我非常同意楼上的说法,恕我孤弱寡闻,不要字符串,不显示出来,哪来的“十六进制”?全部都是二进制,一楼说的!