Как проверить значение флага только с целыми числами и стандартной математикой

1

Я хочу проверить значение флага, когда у меня есть только значения ints:

Изображение 174551

Поэтому, когда у меня есть int x = 54 это означает, что это 0110110, НО я делаю декларативные пользовательские действия sharepoint без возможности создания кода флага и т.д. Я могу делать простые выражения без использования перечислений.

Итак, теперь я получаю день int monday = 32,

поэтому мой вопрос:

Как я могу проверить, что у 54 есть флаг 32, это может быть математический путь или простой алгоритм с простой петлей

ОБНОВИТЬ:

ссылается на Эндрю Уитакера

Изображение 174551

идет с ошибкой

Не удалось перевести выражение '(workDaysValueInt & 32) == 32' из-за следующей ошибки: логические операции допускают только булевы типы данных.

'

Смешно, что когда я использую необработанные данные, например (54 и 32) == 32, у него нет ошибок вообще

Теги:
sharepoint
flags
sharepoint-workflow
workflow-activity

1 ответ

3
Лучший ответ

Если я правильно понимаю, вы должны иметь возможность использовать побитовое & и сравнивать результат с днем недели, который вы проверяете:

int Monday = 32;
int days = 54;

bool hasMonday = (days & Monday) == Monday;

Вот как это выглядит:

  110110
& 100000
  -------
  100000

Причина это работает, когда вы используете целые значения в качестве флагов (и объединения флагов с помощью побитового |), в результате & операции со значением флага даст то, что вы & та с, если она содержит этот флаг, в смысл, зачищающий другую информацию, содержащуюся в значении.

  • 0
    ваш ответ абсолютно прав ... но, что странно, когда я использую переменные, я получил ошибку "Не удалось перевести выражение" (workDaysValueInt & 32) == 32 'из-за следующей ошибки: Логические операции допускают только логические типы данных. "
  • 0
    Это может быть проблемой с sharepoint ... Боюсь, я мало что знаю о sharepoint
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню