SendFrame(18)=Hex(Cint(Text1.Text)))+&H33
应该得到的是十六进制的吧,比如我在Text1(Edit控件)中输入55,应该的得到的是十六进制的6A吧,但是得到的是58
怎么回事呢?
我想这样:如果输入55,就等于SendFrame(18)=&H6A
该怎样做呢
我按照Hex(Cint(Text1.Text)))+&H33和Hex(Val(Text1.Text) + &H33)这来年感种方法,都是输入55,通过串口发送后在那边接收后都是58(十六进制显示),可如果我直接这样:
SendFrame(18)=&H6A在那边当然就是6A了,我要的就是这个结果,可是大家算一下比如用:
SendFrame(18)=Hex(Cint(Text1.Text)))+&H33
吧,如果我输入55,应该是用Hex转化后是十六进制的37,再加上后面的十六进制33应该是十六进制的6A,可我收到的是十六进制的58!!!
我实在搞不懂是为什么……我就想要这种效果:
如果我在Edit中输入55,那SendFrame(18)=Hex(Cint(Text1.Text)))+&H33
后这句话就应该跟SendFrame(18)=&H6A是一样的效果,可现在就是偏偏不一样哦,大家救救我吧

解决方案 »

  1.   

    hex函数返回的是字符串,当然不能与“&H33”相加了等号后面加val("&H" & hex......
      

  2.   

    ?val("&H" & Hex(Cint(55)))+&H33
     106 
    想得到“6A”就再转进16进制
    ?hex(106)
    6A
      

  3.   

    SendFrame(18)到底是字符串类型还是数值类型,如果数值类型,一般显示的总是十进制,你只能在读取时临时转16进制。如果是字符串型,那么试试
    SendFrame(18)=Hex(Cint(Text1.Text)))+&H33)
      

  4.   

    SendFrame(18)是Byte类型,我让他存放十六进制数
      

  5.   

    SendFrame(18)=val("&H" & Hex(Cint(55)))+&H33
    才对
      

  6.   

    其实什么进制并没有关系,&H6A和106是一回事所以你的代码可以写成这样SendFrame(18)=val(text.text)+&H33
      

  7.   

    再多说一句,你把10进制的55转成16进制然后又转回10进制,再与&H33相加,完全是多余的直接把字符串55(因为是文本框)转成10进制数字(用val),再与&H33相加就行了,结果是106,也就是&H6A(不是字符串"6A",字符串就错了)
      

  8.   

    实在感谢 BlueBeer!
    立刻给分