2008-09-19 5 views
2

Как я могу вставить специальные символы ASCII (например, с ASCII-значением 0x01) в строку?C# String ASCII-представление

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

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

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

Update:

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

ответ

6

Я считаю, вы можете использовать \uXXXX, чтобы вставить указанные коды в строку.

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

using System; 
class Uxxxx { 
    public static void Main() { 
     Console.WriteLine("\u20AC"); 
    } 
} 
+0

Является ли шестнадцатеричное значение после символа «\ u» символом ASCII? – 2008-09-19 07:31:59

+0

Будет, если число ниже 0x80. – 2008-09-19 07:38:41

1

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

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

1

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

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

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