Как назначить символ, используя данные ASCII? - PullRequest
6 голосов
/ 07 января 2010

Как сохранить символ ASCII в литерале "char"?

Символом ASCII, который я хочу использовать для моего специального символа, является символ разделителя файлов:

Десятичное число: 028
Восьмеричное: 034
Hex: 01C
Двоичный код: 00011100

// This works in C/C++, but not C#:
static const char FS = 0x1C; // File Separator

Ответы [ 4 ]

13 голосов
/ 07 января 2010

Статический модификатор не нужен, и вы должны явно привести ваше int к типу char.

const char FS = (char)0x1C;
5 голосов
/ 07 января 2010

Я бы подумал, '\u001C' будет работать.

2 голосов
/ 07 января 2010

const char FS = '\ x1C';

0 голосов
/ 07 января 2010

Будьте осторожны с кодировками, если вы собираетесь записывать это в поток; Символы и строки .NET имеют кодировку UTF-16, так что на самом деле они будут записаны как 001C (или 1C00, в зависимости от порядкового номера; я не помню, какой). Вы можете избежать этой проблемы, указав соответствующую кодировку при открытии потока.

Редактировать: На самом деле это не так! Только что проверив его, поведение по умолчанию для StreamWriter и др. Состоит в том, чтобы использовать текущую кодовую страницу системы ANSI (обычно ISO-8859-1), так что она фактически записывается в ожидаемом 8-битном формате. Это, конечно, даст неожиданные результаты для не-ANSI символов.

...