Как я могу преобразовать из Unicode в один байт в C #? - PullRequest
0 голосов
/ 13 апреля 2010

Как преобразовать Unicode в однобайтовый в C #?

Это не работает:

int level =1;
string argument;
// and then argument is assigned

if (argument[2] == Convert.ToChar(level))
{
    // does not work
}

А это:

char test1 = argument[2];
char test2 = Convert.ToChar(level);

дает забавные результаты. test1 может быть: 49 '1', тогда как test2 будет 1 ''

Ответы [ 4 ]

3 голосов
/ 13 апреля 2010

Как преобразовать Unicode в однобайтовый в C #?

Этот вопрос не имеет смысла, а пример кода только усугубляет ситуацию.

Unicode - это отображение символов в кодовые точки. Кодовые точки пронумерованы от 0x0 до 0x10FFFF, что намного больше значений, чем может быть сохранено в одном байте.

И образец кода имеет int, string и char. byte s нигде нет.

Что вы действительно пытаетесь сделать?

2 голосов
/ 13 апреля 2010

Использовать UnicodeEncoding.GetBytes () .

UnicodeEncoding unicode = new UnicodeEncoding();
Byte[] encodedBytes = unicode.GetBytes(unicodeString);
1 голос
/ 13 апреля 2010

Если вы хотите проверить, соответствует ли int level аргументу char [2] , используйте

  if (argument[2] == Convert.ToChar(level + (int)'0'))
1 голос
/ 13 апреля 2010

char и string всегда являются Unicode в .NET. Вы не можете делать это так, как пытаетесь.

На самом деле, чего вы пытаетесь достичь?

...