Гекса базовая цифра и десятичная базовая цифра в C # - PullRequest
4 голосов
/ 08 ноября 2011

Некоторые из моих загруженных кодов c # включают шестнадцатеричные вычисления.

eg. int length = ((((byte) hexstr[0x10]) & 0x80) > 0) ? 0x10 : 8;

когда я изменяю этот код на обычный десятичный код, подобный этому

int length = ((((byte) hexstr[16]) & 128) > 0) ? 16 : 8;

Это дает то же решение без ошибок.
Он по-прежнему работает правильно.
Поэтому я хотел бы знать, почему в большинстве кодов используется шестнадцатеричная базовая цифра, которую сложнее понять, чем обычная десятичная цифра.

Если кто-нибудь знает это, пожалуйста, дайте мне знать.

1 Ответ

4 голосов
/ 08 ноября 2011

Показывает битовую комбинацию более четко. 0x80 - это значение с верхним nybble, установленным на 8, и нижним nybble, установленным на 0 ... это совсем не ясно из десятичного значения.

В качестве другого примера, если я хочу замаскировать второй и третий байты целого числа, я мог бы использовать:

int masked = original & 0xffff00;

Я написал этот код без калькулятора или чего-то подобного. Нет никакого способа сделать то же самое для десятичного эквивалента - я не могу умножить 65535 на 256 в моей голове с какой-либо вероятностью успеха, и полученный код в любом случае не был бы столь же ясным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...