C#Socket发送字符串转换

时间:2012-03-07 01:50:02

标签: c# string sockets hex

我对此很陌生,所以有些困惑。我想使用Socket类发送转换为十六进制的“OPTIONS”。所以这就是我到目前为止所拥有的。我将“OPTIONS”转换为十六进制,并希望发送“4F5054494F4E53”。

    private void button2_Click(object sender, EventArgs e)
    {
        var message = Encoding.ASCII.GetBytes("4F5054494F4E53");
        client.BeginSend(message, 0, message.Length, SocketFlags.None,
                     new AsyncCallback(SendData), client);

    }

但是当我在BeginSend上设置断点时,消息字节数组包含“52705348”而不是“4F5054”等。我该如何处理?感谢

1 个答案:

答案 0 :(得分:2)

在ASCII 0x52 = char 4,0x70 = char F等中, 得到你期望的结果:

var message = Encoding.ASCII.GetBytes("OPTIONS");

验证:

        byte[] verifyHex = new byte[] { 0x4F, 0x50,  0x54, 0x49, 0x4F, 0x4E, 0x53};
        byte[] verifyDec = new byte[] { 79, 80, 84, 73, 79, 78, 83};

        var message = Encoding.ASCII.GetBytes("OPTIONS");

        if (message.Where((t, i) => t != verifyDec[i] || t != verifyHex[i]).Any())
        {
            MessageBox.Show("Not equal.");
        }
        else
        {
            MessageBox.Show("All three representations are equal.");
        }