注册 登录
编程论坛 VB6论坛

vb数制转换

爱好者初级 发布于 2016-05-31 08:53, 1946 次点击
vb接收到五个字节的16进制数,怎样把他们转换为对应的字符显示?
7 回复
#2
风吹过b2016-05-31 09:02
1、使用 CHR 函数逐字节转换
2、使用 strconv 函数按数组直接转换。
#3
爱好者初级2016-05-31 10:07
回复 2楼 风吹过b
能不能具体一点,我的下位机传上来的是五个字节16进制温度,显示的也是16进制,能不能给些代码参考一下
#4
风吹过b2016-05-31 10:43
你传过来的是 字符型式的值,还是数据类型的值。
这个没明确,怎么转换。

如果是字符型的。
用 CHR 一个字节,一个字节的转换,然后连接起来。
s=chr(a(0)) & chr(a(1))  & chr(a(2)) & chr(a(3)) & chr(a(4))

如果是数值。5个字节,不知道是怎么构成的。
如果是2字节:高位在后
i=A(0)+A(1)*255
4字节:
i=a(0)+a(1)*255+a(2)*255*255+a(3)*255*255*255


#5
爱好者初级2016-06-02 14:12
回复 4楼 风吹过b
收到的是33 33 2E 30 0A这一串十六进制,33的字符是3,2E是小数点,30的字符是0。就是要把这一串转换之后,得到的就是33.0的温度值。。。
#6
wds12016-06-04 11:04
1、如果直接是数值型
temp= chr(&H33)+chr(&H33)+chr(&H2E)+chr(&h30)+chr(&h0a)
结果:temp=33.0

2、如果是字符型a1="33" a2="33" a3="2e" a4="30" a5="0a"
a1="&h" +a1
a2="&h" +a2
a3="&h" +a3
a4="&h" +a4
a5="&h" +a5
temp= chr(val(a1))+chr(val(a3))+chr(val(a3))+chr(val(a4))+chr(val(a5))

#7
良毅毅2016-06-04 17:40
Private Sub Command1_Click()             '“转换”按钮
   Dim d As Long
   d = Val(Text1.Text)
   Text2.Text = fntran(d, 2)             '转换为二进制数
   Text3.Text = fntran(d, 8)             '转换为八进制数
   Text4.Text = fntran(d, 16)            '转换为十六进制数
End Sub
Function fntran(ByVal d As Long, r As Integer) As String
   Dim t As String, n As Integer
   t = ""
   Do While d > 0                        '直到商为0
      n = d Mod r                        '取余数
      d = d \ r                          '求商
      If n > 9 Then                      '超过9转换成对应的A~F十六进制数表示形式
          t = Chr(n + 55) & t            '换码为字母,反序加入
      Else
          t = n & t                      '反序加入
      End If
   Loop
   fntran = t
End Function
#8
良毅毅2016-06-04 17:42
以下是引用良毅毅在2016-6-4 17:40:43的发言:

Private Sub Command1_Click()             '“转换”按钮
   Dim d As Long
   d = Val(Text1.Text)
   Text2.Text = fntran(d, 2)             '转换为二进制数
   Text3.Text = fntran(d, 8)             '转换为八进制数
   Text4.Text = fntran(d, 16)            '转换为十六进制数
End Sub
Function fntran(ByVal d As Long, r As Integer) As String
   Dim t As String, n As Integer
   t = ""
   Do While d > 0                        '直到商为0
      n = d Mod r                        '取余数
      d = d \ r                          '求商
      If n > 9 Then                      '超过9转换成对应的A~F十六进制数表示形式
          t = Chr(n + 55) & t            '换码为字母,反序加入
      Else
          t = n & t                      '反序加入
      End If
   Loop
   fntran = t
End Function

只有本站会员才能查看附件,请 登录
1