Шестнадцатеричный 0x0001 против 0x00000001 - PullRequest
6 голосов
/ 15 ноября 2009

часто в коде, который использует проверку разрешений, я вижу, что некоторые люди используют hex 0x0001, а другие используют 0x00000001. они оба выглядят как эквивалент десятичной 1, если я не ошибаюсь.

зачем использовать одно над другим, просто вопрос предпочтений?

Ответы [ 2 ]

12 голосов
/ 15 ноября 2009

Предполагая, что это C, C ++, Java, C # или что-то подобное, они одинаковы. 0x0001 подразумевает 16-битное значение, в то время как 0x00000001 подразумевает 32-битное значение, но реальная длина слова определяется компилятором во время компиляции при вычислении шестнадцатеричных литералов, подобных этим. Это вопрос стиля кодирования, но он не имеет никакого значения в скомпилированном коде.

3 голосов
/ 15 ноября 2009

Здесь происходит то, что это битовая маска, для которой традиционно размещать ведущие нули на ширину битовой маски. Кроме того, я бы предположил, что ширина битовой маски изменилась в какой-то момент, чтобы добавить более специализированные разрешения.

...