VB winsock控件 TCP client 接收十六进制数据出现乱码,求解决~

时间:2022-02-26 23:42:48
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim a() As Byte
Winsock1.GetData a, vbArray Or vbByte
Text_Rec.Text = a
End Sub
这是我的一段接收代码,发送的是十六进制数据,接收也要十六进制的形式,可是我接受到的是乱码,不知道怎么回事,求大神帮忙,在线等待~
乱码出现这样子的   ?????
                          ?漄???
                          ???ú
这是我发送数据后返回的乱码

3 个解决方案

#1


    ReDim iBuf(bytesTotal - 1)
    tcpRTB.GetData iBuf
'   log每个收到的字节
'   i = 0
'   lnx = "RTB-->BYTE:" + Right("0000000" + Hex(i), 8) + "-"
'   For i = 0 To bytesTotal - 1
'       lnx = lnx + " " + Right("0" + Hex(iBuf(i)), 2)
'       If i Mod 16 = 15 Then
'           LogRX lnx
'           lnx = "RTB-->BYTE:" + Right("0000000" + Hex(i + 1), 8) + "-"
'       End If
'   Next
'   i = bytesTotal - 1
'   If i Mod 16 <> 15 Then
'       LogRX lnx
'   End If

#2


发送的是双字节吧?
strconv转换下

#3


Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim a() As Byte, i As Long, strTmp As String

Winsock1.GetData a, vbArray Or vbByte
For i = 0 To bytesTotal - 1
    strTmp = strTmp & IIf(i, " ", "") & Right("00" & Hex(a(i)), 2)
Next i
Text_Rec.Text = strTmp
End Sub

#1


    ReDim iBuf(bytesTotal - 1)
    tcpRTB.GetData iBuf
'   log每个收到的字节
'   i = 0
'   lnx = "RTB-->BYTE:" + Right("0000000" + Hex(i), 8) + "-"
'   For i = 0 To bytesTotal - 1
'       lnx = lnx + " " + Right("0" + Hex(iBuf(i)), 2)
'       If i Mod 16 = 15 Then
'           LogRX lnx
'           lnx = "RTB-->BYTE:" + Right("0000000" + Hex(i + 1), 8) + "-"
'       End If
'   Next
'   i = bytesTotal - 1
'   If i Mod 16 <> 15 Then
'       LogRX lnx
'   End If

#2


发送的是双字节吧?
strconv转换下

#3


Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim a() As Byte, i As Long, strTmp As String

Winsock1.GetData a, vbArray Or vbByte
For i = 0 To bytesTotal - 1
    strTmp = strTmp & IIf(i, " ", "") & Right("00" & Hex(a(i)), 2)
Next i
Text_Rec.Text = strTmp
End Sub