| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1850 人关注过本帖
标题:vb数制转换
只看楼主 加入收藏
爱好者初级
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-5-31
结帖率:0
收藏
已结贴  问题点数:20 回复次数:7 
vb数制转换
vb接收到五个字节的16进制数,怎样把他们转换为对应的字符显示?
2016-05-31 08:53
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:7 
1、使用 CHR 函数逐字节转换
2、使用 strconv 函数按数组直接转换。

授人于鱼,不如授人于渔
早已停用QQ了
2016-05-31 09:02
爱好者初级
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-5-31
收藏
得分:0 
回复 2楼 风吹过b
能不能具体一点,我的下位机传上来的是五个字节16进制温度,显示的也是16进制,能不能给些代码参考一下
2016-05-31 10:07
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
你传过来的是 字符型式的值,还是数据类型的值。
这个没明确,怎么转换。

如果是字符型的。
用 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



授人于鱼,不如授人于渔
早已停用QQ了
2016-05-31 10:43
爱好者初级
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-5-31
收藏
得分:0 
回复 4楼 风吹过b
收到的是33 33 2E 30 0A这一串十六进制,33的字符是3,2E是小数点,30的字符是0。就是要把这一串转换之后,得到的就是33.0的温度值。。。
2016-06-02 14:12
wds1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:49
帖 子:393
专家分:2025
注 册:2016-3-10
收藏
得分:7 
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))

2016-06-04 11:04
良毅毅
Rank: 1
来 自:湖北
等 级:新手上路
帖 子:8
专家分:7
注 册:2016-5-10
收藏
得分:7 
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

说了晚安去睡的人,往往半小时以后还在得瑟。-------qq1406998801
2016-06-04 17:40
良毅毅
Rank: 1
来 自:湖北
等 级:新手上路
帖 子:8
专家分:7
注 册:2016-5-10
收藏
得分:0 
以下是引用良毅毅在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

图片附件: 游客没有浏览图片的权限,请 登录注册

说了晚安去睡的人,往往半小时以后还在得瑟。-------qq1406998801
2016-06-04 17:42
快速回复:vb数制转换
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021259 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved