虐杀妹漫画:vb 数据高低字节交换

来源:百度文库 编辑:偶看新闻 时间:2024/04/30 12:24:42
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)