MichaelR: 0x3000 - was bedeutet 0x ?

Hallo,

bin über folgende JavaScript Funktion gestolpert:

function is IsCJK(CharNum){
return ((CharNum >= 0x3000)&&(CharNum < 0xd800));
}

Das 0x hat scheinbar die gleiche Wirkung wie wenn es überhaupt nicht da stünde. Warum schreibt man es (vermutlich standardmäßig??) trotzdem dazu, obwohl es scheinbar keine Bedeutung hat?

Grüße
Michael

  1. Hallo Michael,

    Das 0x hat scheinbar die gleiche Wirkung wie wenn es überhaupt nicht da stünde. Warum schreibt man es (vermutlich standardmäßig??) trotzdem dazu, obwohl es scheinbar keine Bedeutung hat?

    Es kennzeichnet die Zahl als Hexadezimalzahl, also nicht zur Basis 10 sondern zur Basis 16.

    Dezimal: 0 1 2 ... 8 9 10 11 .. 15 16 17
    Hexadezimal: 0x0 0x1 0x2 ... 0x8 0x9 0xA 0xB .. 0xF 0x10 0x11 .. 0x1A

    Gruss, Thoralf

    --
    Sic Luceat Lux!
    1. Hi Thoralf,

      Das 0x hat scheinbar die gleiche Wirkung wie wenn es überhaupt nicht da stünde. Warum schreibt man es (vermutlich standardmäßig??) trotzdem dazu, obwohl es scheinbar keine Bedeutung hat?

      Es kennzeichnet die Zahl als Hexadezimalzahl, also nicht zur Basis 10 sondern zur Basis 16.

      Dezimal: 0 1 2 ... 8 9 10 11 .. 15 16 17
      Hexadezimal: 0x0 0x1 0x2 ... 0x8 0x9 0xA 0xB .. 0xF 0x10 0x11 .. 0x1A

      Aha interessant!

      Mich hatte die Null nur etwas verwirrt, weil es ja auch die Schreibung für "normale" hex-Werte gibt: &#x3000;

      Noch eine Anschlussfrage: mein kurzer Test hatte ergeben, dass es in der JavaScript Funktion zum gleichen Ergebnis kommt, wenn man das 0x weglässt (also nur 3000) schreibt.
      Was wäre aber "standard-konformer" bzw. "schönerer" js-Code?

      Grüße + Danke
      Michael

      1. Moin,

        Mich hatte die Null nur etwas verwirrt, weil es ja auch die Schreibung für "normale" hex-Werte gibt: &#x3000;

        Das eine hat mit dem anderen nichts zu tun. Was du da hast ist eine HTML-Zeichenreferenz für das Zeichen mit dem Code 0x3000.

        Noch eine Anschlussfrage: mein kurzer Test hatte ergeben, dass es in der JavaScript Funktion zum gleichen Ergebnis kommt, wenn man das 0x weglässt (also nur 3000) schreibt.

        Es gibt nicht das gleiche Ergebnis. So wie der Code war prüft er ob der übergebene Wert zwischen 0x3000 und 0xd800 liegt. Wenn du die 0x vor der 3000 weglässt würde er nur noch überprüfen ob der Wert zwischen 3000 und 0xd800 liegt. (Wenn du die 0x vor der d800 weglässt wird das als Variablenname interpretiert.)

        --
        Henryk Plötz
        Grüße aus Berlin
        ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
        ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
      2. Hallo Michael,

        Henryk hat das wesentliche schon gesagt.

        Noch eine Anschlussfrage: mein kurzer Test hatte ergeben, dass es in der JavaScript Funktion zum gleichen Ergebnis kommt, wenn man das 0x weglässt (also nur 3000) schreibt.

        Nur ein kurzes Beispiel, c&p-tauglich und funktioniert. ;)

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
        <html>
        <head>
        <title>New Document</title>
        </head>
        <body>
        <script language="JavaScript">
        alert( 0x10 );
        alert( 10 );
        </script>
        </body>
        </html>

        Gibt einmal 16 und einmal 10, ist also mitnichten das gleiche Ergebnis.

        Gruss, Thoralf

        --
        Sic Luceat Lux!