Преобразуйте байтовые флаги в кодах состояния ошибки в int - PullRequest
0 голосов
/ 20 марта 2019

Я запутался в битовых масках, битовых флагах и других "битовых" вещах.У меня есть список кодов ошибок - например, [102, 104, 108, 80000000, 8000000, 10000000, 1000000, 0x0008000, ....].Часть из них записывается в системные журналы, как битовые флаги, например «67108864» (а часть из них нет, и возвращают нормальные числа).Мне нужно сопоставить их, но я не могу найти ни одного алгоритма.Как я могу это сделать?Может быть, он используется только для кодов типа «0x0008000»?Если это правда, как определить, что из этого?

Проблема глубже.Я не понимаю байтовые флаги.Я понимаю, что флаги обычно используются для логических состояний, но здесь регистрируются коды состояния.Например, 102 - это (1100110) 2.Флаг байта для этого числа равен 2 + 4 + 32 + 64 ... Я так преобразовываю int в двоичную форму, и он, очевидно, равен 102. Так что я в замешательстве.

Спасибо за ваше время!

1 Ответ

0 голосов
/ 20 марта 2019

Вы должны отделить

  • пронумерованные коды ошибок / сообщений (обычно значения в некотором диапазоне, например 101, 102, 103... или в некоторых диапазонах) - они просто указывают, какая ошибка произошла, эта ошибка (например, «файл не найден») полностью определена (по крайней мере, создатели сообщений верят :))

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

...