Как добавить управляющий символ в строку в C #? - PullRequest
2 голосов
/ 28 февраля 2012

Я вижу подобные ответы здесь, но ни один из них мне не нужен.

Я пытаюсь создать подтверждение сокета, в котором строковое сообщение начинается с управляющего символа 0B и имеет как шестнадцатеричный 1C, так и шестнадцатеричный 0D в конце транзакции.

StringBuilder sb = new StringBuilder();
char b = '\u000b'; 
char c = '\u001c';
char d = '\u000d';
sb.Append(b);
sb.AppendLine(ackMessage);
sb.Append("MSA|AA|" + controlID);
sb.Append(c);
sb.Append(d);
string myMessage = sb.ToString();

Получатель сообщения не видит контрольные символы в начале и конце блока, и я не уверен, где я неправильно пишу код. Любая помощь будет принята с благодарностью. Я не знаю, как скопировать код здесь в правильном формате, поэтому, пожалуйста, простите за форматирование этого вопроса;)

Спасибо.

Грег

1 Ответ

4 голосов
/ 29 февраля 2012

Строки и символы в .NET являются Unicode.Ваш потребитель ожидает Unicode?Может быть, вам нужно создать / передать байтовый массив ASCII вместо этого?

    byte[] unicodeBytes = Encoding.Unicode.GetBytes(ackMessage);
    var asciiBytes = new List<byte>(ackMessage.Length + 3);
    asciiBytes.Add(0x0b);
    asciiBytes.AddRange(Encoding.Convert(Encoding.Unicode, Encoding.ASCII, unicodeBytes));
    asciiBytes.AddRange(new byte[] { 0x1c, 0x0d });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...