Цель C ==> char ==> Специальные символы?

char c1 = 'A';
char c2 = 'F';
char final = (char) c1^c2;

Это всегда возвращает результат, который я ищу, но не работает, если c1 или c2 содержат специальные символы. Любая идея, что я могу изменить, чтобы разрешить использование специальных символов? Спасибо


person aryaxt    schedule 24.06.2010    source источник
comment
Что ты пытаешься сделать?   -  person dreamlax    schedule 24.06.2010
comment
Что вы подразумеваете под специальными символами?   -  person apaderno    schedule 24.06.2010
comment
Ну, если вы поменяете символы, то, очевидно, вы получите другой результат, не так ли? ;) Что вы имели в виду под это не работает?   -  person Felix Kling    schedule 24.06.2010
comment
да, еще один результат, но не тот результат, который я ищу. Я пытаюсь зашифровать некоторые данные таким образом. И я уже знаю, чего ожидать от результата, но получаю неправильный результат   -  person aryaxt    schedule 24.06.2010


Ответы (1)


«Специальные символы» могут означать что угодно. Если вы пытаетесь представить кодовые точки Unicode (32-битные) в chars (8-битные), вы столкнетесь с проблемами. Вместо этого рассмотрите возможность использования unichar.

Вы также можете рассмотреть возможность использования NSStrings вместо самостоятельного управления отдельными персонажами, поскольку они занимают набор символов.

person Community    schedule 24.06.2010
comment
спасибо, я не могу использовать nsstring, мне нужно прочитать символы 1 на 1 и зашифровать их - person aryaxt; 24.06.2010
comment
Затем либо обработайте поток символов как необработанные данные и зашифруйте его как таковой, либо прочитайте кодировку символов. Дело в том, что некоторые символы просто не помещаются в chars, потому что данные, которые их представляют, слишком велики. Например, символ 私. - person ; 24.06.2010
comment
У меня получилось, спасибо, chard не поддерживает специальные символы, а unichars поддерживает. Мне также пришлось кодировать строку, используя NSUTF8Encoder вместо NSASCIIEncoder. - person aryaxt; 24.06.2010