虐杀妹漫画:vb 数据高低字节交换
来源:百度文库 编辑:偶看新闻 时间:2024/04/30 12:24:42
如果你想让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)