打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
vb 数据高低字节交换
vb 数据高低字节交换
 

       如果你想让VB和其他软件或仪器仪表进行通讯,就会经常用到数值高低位转换的问题。以下方法可以方便地解决。

一、新建一个模块,复制下面代码。

Option Explicit
' 用途:将二进制转化为十进制
Public Function BIN_to_DEC(ByVal Bin As String) As Long
Dim i As Long
    For i = 1 To Len(Bin)
        BIN_to_DEC = BIN_to_DEC * 2 + Val(Mid(Bin, i, 1))
    Next i
End Function

' 用途: 将十进制转化为二进制
Public Function DEC_to_BIN(Dec As Long) As String
    DEC_to_BIN = ""
    Do While Dec > 0
        DEC_to_BIN = Dec Mod 2 & DEC_to_BIN
        Dec = Dec \ 2
    Loop
End Function

' 用途:把数值转换为高低字节形式
' 输入:strSendVal(要发送的数 为整数型),nSendvalh (转化后的高位),nSendvall (转化后的低位)
'返回值:nSendvalh,nSendvall
Sub Val2HL(ByVal strSendVal As Long, nSendvalh As Integer, nSendvall As Integer)
    Dim strSendValtoBin As String    '将发送的数转化为二进制
    Dim strSendValh As String    ''二进制高位
    Dim strSendVall As String    ''二制制低位
    If strSendVal < 0 Then strSendVal = 32768 - Abs(strSendVal)    '小于0 求补
    strSendValtoBin = Format(DEC_to_BIN(strSendVal), "0000000000000000")
    strSendValh = Mid(strSendValtoBin, 1, 8)
    strSendVall = Mid(strSendValtoBin, 9, 8)
    nSendvalh = BIN_to_DEC(strSendValh) + 128
    nSendvall = BIN_to_DEC(strSendVall)
End Sub

' 用途:把高低字节形式还原为原数值
' 输入:nSendvalh (转化后的高位),nSendvall (转化后的低位)
' 输出:还原后的数值
Function HL2Val(ByVal nSendvalh As Integer, ByVal nSendvall As Integer) As Long
    Dim strSendValtoBin As String    '将发送的数转化为二进制
    Dim strSendValh As String    ''二进制高位
    Dim strSendVall As String    ''二制制低位
    strSendValh = Format(DEC_to_BIN(CLng(nSendvalh) - 128), "00000000")
    strSendVall = Format(DEC_to_BIN(CLng(nSendvall)), "00000000")
    HL2Val = BIN_to_DEC(strSendValh & strSendVall)
End Function

二、调用举例

1、把数值转换为高低字节形式
Dim H As Integer, L As Integer, V As Long
V = 1200
Val2HLV, H, L
Debug.Print H, L       (H=132,L=176)

2、把高低字节形式还原为原数值
Dim H As Integer, L As Integer, V As Long
H=132
L=176
V=HL2Val(H,L)       (V=1200)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VB实用代码,收藏!!
请问VB中URLEncode怎写?
Vb6里面数组的使用的小例子 -- 中国VB网
VB打开EXCEL的方法
vb6托盘右键菜单怎么设置?
用VB编程解决数学中的组合数计算问题!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服