串口通讯strData = strData & "0" & Hex(BytReceived(i)) 什么意思?

下面这段代码不太懂,那位大侠指点下If Len(Hex(BytReceived(i))) = 1 Then strData = strData & "0" & Hex(BytReceived(i)) Else strData = strData & Hex(BytReceived(i)) End If 完整代码如下Private Sub Form_Load() MSComm1.Settings = "9600,n,8,1" ✀暂定无校验,数据位8位,停止位1位 MSComm1.InputMode = comInputModeBinary ✀采用二进制传输 MSComm1.InBufferCount = 0 ✀清空接受缓冲区 MSComm1.OutBufferCount = 0 ✀清空传输缓冲区 MSComm1.RThreshold = 1 ✀产生MSComm事件 MSComm1.InBufferSize = 1024 MSComm1.PortOpen = True End Sub Private Sub MSComm1_OnComm() ✀接收数据 Dim BytReceived() As Byte Dim strBuff As String Select Case MSComm1.CommEvent Case 2 MSComm1.InputLen = 0 strBuff = MSComm1.Input BytReceived() = strBuff Dim i As Integer For i = 0 To UBound(BytReceived) If Len(Hex(BytReceived(i))) = 1 Then strData = strData & "0" & Hex(BytReceived(i)) Else strData = strData & Hex(BytReceived(i)) End If Next Text1 = strData
2026年09月26日 19:06
有2个网友回答
网友(1):

接收到的数据BytReceived(i)转换成16进制数,如果是一位数前面加个0,最终都形成2位数,加到原来接收的字符串中,例如:strda="0122",此时接收到位3A,则strda="01223A",如果接收的是A,则则strda="01220A",

网友(2):

接收到的数据BytReceived(i)转换成16进制数,再判断这个数是不是个位数(即1位数),
是个位则在原数据堆先放一个0再放新收到的数据
否则
不是个位,则直接在原数据堆放新收到的数据