2012-03-07 4 views
1

Я довольно новичок в этом, поэтому немного смущен. Я хочу отправить «ОПЦИИ», преобразованный в hex, используя класс Socket. Итак, вот что я до сих пор. У меня есть «ОПЦИИ», преобразованный в шестнадцатеричный, и вы хотите отправить «4F5054494F4E53».C# Socket send string conversion

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» и т.д. Как справиться с этим? Благодаря

ответ

2

В ASCII 0x52 = полукокса 4, 0x70 = символ 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."); 
     } 
+0

Я просто попытался что и массив содержит 79808473797883, но мне нужно, чтобы оно было указано выше. – user1224096

+0

@ChaosPandion Я не уверен, как это мне поможет, так как мне придется преобразовать его снова в массив байтов, и у меня будет такая же проблема. – user1224096

+0

@ user1224096: 79 decimal = 0x4F hex = ASCII O, 80 = 0x50 = P, 84 = 0x54 = T и т. Д. Таблица ASCII Google –