文档详情

【2017年整理】vb将单精度转换为4个字符串.doc

发布:2017-02-01约1.81万字共15页下载文档
文本预览下载声明
Option Explicit Private Declare Sub CopyMemory Lib kernel32 Alias RtlMoveMemory (Destination As Any, Source As Any, ByVal Length As Long) Private Sub cmdSinHex_Click() Text3 = Dim i As Integer Dim hexData As String Dim a As Single Dim Buffer(3) As Byte a = Val(Text1) CopyMemory Buffer(0), a, 4 For i = 0 To 3 If Len(Hex(Buffer(i))) = 1 Then hexData = 0 Hex(Buffer(i)) + hexData Else hexData = Hex(Buffer(i)) + hexData End If Next Text2 = hexData For i = 1 To Len(hexData) Step 2 Text3 = Text3 ChrW(Val(H Mid(hexData, i, 2))) Next End Sub Private Sub Form_Load() Text1 = Text2 = Text3 = End Sub VB串口通信中经常会遇到10进制浮点数转为多字节Byte数据类型的情况,以及在接收后需转为10进制浮点数需求。 VB有专门的API函数CopyMemory能处理2-10进制浮点数转换和10-2进制浮点数转换。 下列代码演示了10进制Single(单精度浮点型转为16进制字符显示的浮点数和其相反运算: Option Explicit Private Declare Sub CopyMemory Lib kernel32 Alias RtlMoveMemory (Destination As Any, Source As Any, ByVal Length As Long) Private Sub BinToSin_Click() Dim sinStr As String Dim sinSj As Single Dim Buffer(3) As Byte Dim i As Integer sinStr = Text2 For i = 1 To Len(Text2) Step 2 Buffer((7 - i) / 2) = Val(H Mid(sinStr, i, 2)) Next CopyMemory ByVal VarPtr(sinSj), ByVal VarPtr(Buffer(0)), 4 Text3 = sinSj End Sub Private Sub SinToBin_Click() Dim i As Integer Dim hexData As String Dim a As Single Dim Buffer(3) As Byte a = Val(Text1) CopyMemory Buffer(0), a, 4 For i = 0 To 3 If Len(Hex(Buffer(i))) = 1 Then hexData = 0 Hex(Buffer(i)) + hexData Else hexData = Hex(Buffer(i)) + hexData End If Next Text2 = hexData End Sub 下列代码演示了10进制Double(双精度浮点型)转为16进制字符显示的浮点数和其相反运算: Option Explicit Private Declare Sub CopyMemory Lib kernel32 Alias RtlMoveMemory (Destination As Any, Source As Any, ByVal Length As Long) Private Sub cmdDoubHex_Click() Dim i As Integer Dim hexDa
显示全部
相似文档