C # String ASCII представление - PullRequest
       40

C # String ASCII представление

2 голосов
/ 19 сентября 2008

Как вставить специальные символы ASCII (например, со значением ASCII 0x01) в строку?

Я спрашиваю, потому что я использую следующее:

str.Replace( "<TAG1>", Convert.ToChar(0x01).ToString() );

и я чувствую, что должен быть лучший способ, чем этот. Есть идеи?

Обновление:

Кроме того, если я использую эту методологию, нужно ли мне беспокоиться о конфликтах Юникода и ASCII?

Ответы [ 3 ]

6 голосов
/ 19 сентября 2008

Полагаю, вы можете использовать \uXXXX для вставки указанных кодов в вашу строку.

ETA: Я только что проверил, и это работает. : -)

using System;
class Uxxxx {
    public static void Main() {
        Console.WriteLine("\u20AC");
    }
}
1 голос
/ 24 июля 2009

и я чувствую, что должно быть лучше путь, чем это. Есть идеи?

Похоже, что вы пытаетесь манипулировать двоичным фрагментом с помощью текстовых инструментов . Например, если вы хотите вставить байт 0x01, вы больше не манипулируете текстом, поскольку вам все равно, что этот байт может представлять, и, похоже, вы даже не все равно, какую кодировку вы будете выводить.

Лучшим способом было бы рассматривать объект, которым вы манипулируете, как двоичный кусок данных, который позволял бы вам легко вставлять биты и байты, не используя хрупкие обходные пути и не заботясь о побочных эффектах.

1 голос
/ 19 сентября 2008

Кроме того, если я использую эту методологию, нужно ли мне беспокоиться о конфликтах Юникода и ASCII?

Ваша первая проблема - столкновение тегов с ASCII. Как только вы доберетесь до TAG10, вы столкнетесь с 0x0A: перевод строки. Если вы гарантируете, что никогда не получите больше девяти тегов, вы должны быть в безопасности. Unicode-кодировка (или, скорее, UTF8) идентична ASCII-кодировке, когда значения байтов находятся в диапазоне от 0 до 127. Они отличаются только при установке верхнего бита.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...