2009-11-14 7 views
6

oft in Code, der die Überprüfung der Berechtigungen verwendet, sehe ich einige Leute verwenden hex 0x0001 und andere verwenden 0x00000001. diese beiden sehen aus wie eine 1, wenn ich mich nicht irreführe.Hex 0x0001 vs 0x00000001

warum verwenden Sie einen über den anderen, nur eine Frage der Präferenz?

+5

Stellen Sie sicher, dass Sie keine führenden Nullen für Dezimalzahlen verwenden, da abhängig von der Sprache eine Oktalzahl angezeigt wird. '0053' ist nicht notwendig die gleiche Nummer wie' 53'. –

Antwort

12

Angenommen, dass dies C, C++, Java, C# oder etwas ähnliches ist, sind sie gleich. 0x0001 impliziert einen 16-Bit-Wert, während 0x00000001 einen 32-Bit-Wert impliziert, aber die tatsächliche Wortlänge wird vom Compiler zur Kompilierzeit bestimmt, wenn hexadezimale Literale wie diese ausgewertet werden. Dies ist eine Frage des Codierungsstils, aber es macht keinen Unterschied im kompilierten Code.

+0

+1 - schlag mich dazu – ChrisF

3

Was hier vor sich geht, ist eine Bitmaske, für die es üblich ist, führende Nullen auf die Breite der Bitmaske zu verteilen. Ich würde außerdem erraten, dass die Breite der Bitmaske irgendwann geändert wurde, um speziellere Berechtigungen hinzuzufügen.