Casalblanca: Javascript: Convert to byte

Hallo Forum,

ich habe da ein Problem. Ich muss ein Stück Code in C# in Javascript umschreiben. Da stoße ich auf ein Problem. Ich habe diese Zeile al Beispiel in C#:

byte myByte = 0;
byte.TryParse("2", out myByte);

dies gibt für "2" eine 2 zurück. Oder für "6" gibt eine 6 zurück. Ich habe im Netz nach eine Passenden Lösung zur Umwandlung gesuch und gefunden habe ich z.B. diese:

  var bytes = [];
  for (var i = 0; i < this.length; ++i) {
    bytes.push(this.charCodeAt(i));
  }

Dies gibt aber den "charCode" zurück, also für "2" die 50. Gibt es einen Weg in Javascript, das gleiche Ergebnis zu erhalten?

Gruß

  1. Hallo,

    ich glaube, du suchst keine Byte-Funktionen, sondern nur Methoden, um einen String in eine Zahl umzuwandeln. Da Javascript keine Typen kennt, kann das ganz gut automatisch funktionieren:

    a = "2";
    b = "3";
    c = a * b;
    

    Achtung: der "+"-Operator verkettet Strings.

    Du kannst aber auch die Umwandlungsmethoden verwenden: [parseInt()](http://wiki.selfhtml.org /wiki/JavaScript/Funktionen/ParseInt) und parseFloat().

    Gruß Jürgen

    1. Hallo Jürgen,

      vielen Dank für deine Antwort. Aber wenn ein String in byte geparst wird, sollte es nicht etwas ganz anderes rauskommen. Es gibt doch auch so etwas wie Convert.ToInt32. Warum dann "byte.TryParse"?

      Gruß

      1. Tach!

        Aber wenn ein String in byte geparst wird, sollte es nicht etwas ganz anderes rauskommen.

        Nein, da sollte ein Wert zwischen 0 und 255 rauskommen. Wenn du das auch in Javascript einschränken willst, musst du nach dem Parsen noch eine Abfrage auf ungewünschte Werte einbauen.

        Es gibt doch auch so etwas wie Convert.ToInt32. Warum dann "byte.TryParse"?

        Es gibt auch noch andere Typen und Umwandlungen. Das Warum ihres Einsatzes ergibt sich aus dem jeweiligen Anwendungsfall.

        dedlfix.

        1. Hallo,

          danke. Wenn dem so ist, soll dann für die Zahlen dieselbe byte-Zahl rauskommen. Also 0-9 hat einen byte-Wert von 0-9 (in C#)? Wie erwähnt, kommt aber in JS für 2 die 50 heraus und nicht 2.

          Gruß

          1. Tach!

            Wenn dem so ist, soll dann für die Zahlen dieselbe byte-Zahl rauskommen. Also 0-9 hat einen byte-Wert von 0-9 (in C#)?

            byte.TryParse() (und auch byte.Parse()) wandelt eine Zahl zwischen einschließlich 0 und 255, welche als Stringrepräsentation vorliegt, in einen Bytewert um. Das ist schlicht die Umkehrform von byte.ToString().

            Wie erwähnt, kommt aber in JS für 2 die 50 heraus und nicht 2.

            Der von dir gefunde Code macht ja auch was ganz anderes als TryParse(). Wenn da was anderes rauskommt, ist der nicht geeignet. Auch wurde schon das bestmögliche Äquivalent zu TryParse() vorgeschlagen: parseInt() plus zusätzlicher Code für die Bereichtsprüfung und gegebenenfalls noch eine (Regexp-)Prüfung auf Zeichen, die TryParse() scheitern lassen, nicht aber parseInt().

            dedlfix.

    2. Hallo JürgenB,

      a = "2";
      b = "3";
      c = a * b;
      

      Ergänzung

      a = "42";
      b = 1 * a; //42
      

      Bis demnächst
      Matthias

      --
      Signaturen sind bloed (Steel) und Markdown ist mächtig.
    3. Tach!

      Du kannst aber auch die Umwandlungsmethoden verwenden: [parseInt()](http://wiki.selfhtml.org /wiki/JavaScript/Funktionen/ParseInt) und parseFloat().

      Zu beachten ist, dass sich parseInt() und irgendwas.TryParse() unterschiedlich verhalten, wenn ungültige Werte ankommen. "42sdf" ist ein Fehler für TryParse(), für parseInt() ist es die Zahl 42 und der Rest wird ignoriert.

      dedlfix.