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

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

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

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

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

Обновлять:

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
5 087
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

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

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

Представляет ли шестнадцатеричное значение после '\ u' символ ASCII?

TK. 19.09.2008 11:31

Будет, если число меньше 0x80.

Chris Jester-Young 19.09.2008 11:38

Also If I use this methodology, do I need to worry about unicode & ASCII clashing?

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

and I feel that there must be a better way than this. Any Ideas?

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

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

'\ u0001' - допустимый код Unicode. Текстовый / двоичный формат - это вопрос семантики.

Sebastian 09.12.2013 02:09

@SebastianGodelet, не совсем. Кодовые точки Unicode отображаются только в байты в формате преобразования Unicode. В приведенном выше примере кодовая точка Unicode u + 0001 представлена ​​байтом 0x01 в форматах преобразования немного. Таким образом, технически при манипулировании двоичным фрагментом вы можете выяснить, какая комбинация кодовой точки и формата трансляции будет отображаться на двоичную последовательность, которую вы хотите вставить, - если такая комбинация существует. Вряд ли семантика. :)

bzlm 11.12.2013 01:09

хорошо, но OP уже работает со строкой. Итак, он, надеюсь, не должен сначала помещать двоичные данные в строку. И поскольку строка .NET использует UTF-16, \ u0001 является допустимой последовательностью байтов, описывающей тот же самый управляющий символ ASCII.

Sebastian 11.12.2013 14:41

@SebastianGodelet, OP - это только технически, работающий со строкой. Они В самом деле пытаются поместить двоичные данные в строку, например значение «0x01». Для <TAG2> OP вставит 0x02 и так далее. (Кстати, тот факт, что .NET использует UTF-16 внутри, здесь не имеет значения - пример OP будет делать то, что вы говорите, из-за того, как работает Convert.ToChar(), обрабатывая аргумент как номер кодовой точки Unicode.)

bzlm 13.12.2013 01:30

Другие вопросы по теме