2017-01-22 3 views
0

Я пытаюсь переписать старый код, написанный на C++, на C# - код выполняет двоичную манипуляцию с символами, но я получаю разные результаты (возможно, я делаю некоторые плохие манипуляции из-за Unicode в C#).Обработка символов (C++) в C#

мне нужно переписать этот код C++ в C#:

myChar = 'K'^128; 

Результат этого кода в C++ является -53 ('Е') в тип данных CHAR С ++.

То же операции в результатах # C в 203 (опять 'е') в типе данных С # полукокса.

Так что char в порядке, но мне нужно такое же значение байта, как и в C++ (потому что я с ним выполняю математическую операцию). Можете ли вы порекомендовать способ, как безопасно преобразовать символ C# в эквивалентные значения байтов C++?

Благодаря

ответ

2

В одном байте двоичное дополнительное представление 203 является беззнаковой интерпретацией в -53.

Если вы хотели бы использовать эквивалентное представление C++ подписал полукокс, тип должен быть sbyte:

стандарт
sbyte myChar = (sbyte)('K'^128); 

Обратите внимание, что C++ оставляет его до реализации, решает на char подписан ли или без знака , что означает, что некоторые стандартные C++ будут печатать 203 для myChar, а не -58, без каких-либо изменений в вашем коде.

 Смежные вопросы

  • Нет связанных вопросов^_^