通过 TCP/IP 发送十六进制十进制

Send Hex Decimal over TCP / IP

我正在开发客户端以将信息发送到特定服务器。服务器只接受来自客户端的特定数据。数据是“163130303030323030fc”。我已将其转换为 Ascii 为

"SYN10000200ü"

除 "SYN" 外都有效。 "SYN" 必须转换为“16”才能实现。但是当我使用代码 Encoding.Default.GetBytes("<SYN>10000200ü") 时,结果收到

3c53594e3e3130303030323030fc

我使用的代码如下,

  Dim tcpClient As New System.Net.Sockets.TcpClient()
    Try
        tcpClient.Connect("192.168.18.6", 60010)
        Dim networkStream As NetworkStream = tcpClient.GetStream()
        If networkStream.CanWrite And networkStream.CanRead Then




            Dim sendBytes As Byte() = Encoding.Default.GetBytes("<SYN>10000200ü")
            networkStream.Write(sendBytes, 0, sendBytes.Length)

            Do
            Loop Until networkStream.DataAvailable
            Dim bytes(tcpClient.ReceiveBufferSize) As Byte
            networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
            Dim returndata As String = Encoding.ASCII.GetString(bytes)
            TextBox1.Text &= returndata
            tcpClient.Close()
        Else
            If Not networkStream.CanRead Then
                tcpClient.Close()
            Else
                If Not networkStream.CanWrite Then
                    tcpClient.Close()
                End If
            End If
        End If
    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try

如果有一种方法可以在不编码为 ascii 的情况下以十六进制发送数据就可以了

非常感谢您的考虑!

如果您需要将字符串作为文本而非十六进制发送,SYN-character 将转换为 char 22。请参阅 ASCII table 中的 DEC/Decimal 列。

尝试这样做:

Encoding.ASCII.GetBytes(ChrW(22) & "10000200ü")

否则,如果必须以十六进制发送,只需按原样发送十六进制字符串即可:

Encoding.Default.GetBytes("163130303030323030fc")