C # Socket отправить преобразование строки - PullRequest
0 голосов
/ 07 марта 2012

Я довольно новичок в этом, так что немного запутался.Я хочу отправить "ОПЦИИ", преобразованные в гекс, используя класс Socket.Так вот что у меня так далеко.Я "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 Ответ

2 голосов
/ 07 марта 2012

В 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.");
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...