Как я могу получить символ STX гекса 02 - PullRequest
8 голосов
/ 06 марта 2012

У меня есть устройство, к которому я пытаюсь подключиться через сокет, и, согласно инструкции, мне нужен "символ STX шестнадцатеричного 02".

Как я могу сделать это с помощью C #?

Ответы [ 6 ]

13 голосов
/ 01 ноября 2012

Просто комментарий к ответу GeoffM (у меня недостаточно очков, чтобы правильно прокомментировать).

Никогда не вставляйте STX (или другие символы) таким образом, используя только две цифры.

Если следующий символ (после "\ x02") был действительной шестнадцатеричной цифрой, это также будет проанализировано, и это будет беспорядок.

string s1 = "\x02End";
string s2 = "\x02" + "End";
string s3 = "\x0002End";

Здесь s1 равно «.nd», поскольку 2E - это символ точки, а s2 и s3 равны STX + «End».

9 голосов
/ 06 марта 2012

Вы можете использовать экранирование символов Юникода: \u0002

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

Приведите значение Integer от 2 к char:

char cChar = (char)2;
1 голос
/ 12 января 2017

Внутри строки явно лучше использовать формат Unicode , но для использования в качестве байта этот подход работает:

byte chrSTX = 0x02; // Start of Text
byte chrETX = 0x03; // End of Text
// etc...
1 голос
/ 08 мая 2015

\x02 - это код STX, который вы можете проверить Таблица ASCII

checkFinal = checkFinal.Replace("\x02", "End").ToString().Trim();
0 голосов
/ 06 марта 2012

Вы можете встроить STX в строку следующим образом:

byte[] myBytes = System.Text.Encoding.ASCII.GetBytes("\x02Hello, world!");
socket.Send(myBytes);
...