Codewars Lösung | Binary to Text (ASCII) Conversion


coden
Codewars. Achieve mastery through challenge.
Daniel Kaser|16. März 2024
2 min.

Inhalt

  1. Die Fakten
  2. Beschreibung
  3. Lösung
    1. Pseudo-Code
    2. Code
  4. Feedback

Die Fakten:

Plattform:codewars.com
Name:Binary to Text (ASCII) Conversion
Level:6 kyu
Sprache:TypeScript

Beschreibung:

Write a function that takes in a binary string and returns the equivalent decoded text (the text is ASCII encoded).

Each 8 bits on the binary string represent 1 character on the ASCII table.

The input string will always be a valid binary string.

Characters can be in the range from "00000000" to "11111111" (inclusive)

Note: In the case of an empty binary string your function should return an empty string.

Quelle: codewars.com

Lösung

Pseudo-Code

Wie immer gibt's reichlich Varianten, hier ist eine meiner.

Erst die Lösungsschritte in Pseudo-Code. Los geht’s:

Lösungsschritte
Schritt 1

Wir loopen durch das Input-Binary.

Schritt 2

In jeder Iteration schnappen wir uns die nächsten 8 Zeichen.

Schritt 3

Diese 8 Bits wandeln wir in ihre dezimale Entsprechung um.

Schritt 4

Und speichern das Ergebnis in einer Variablen.

Code

Geil. Übersetzen wir unseren Pseudo-Code in TypeScript:

Lösungsschritte
Meine erste Zeile:
export function binaryToString(binary: string): string {
Als Erstes der Loop:
  for (let i = 0; i < binary.length; i += 8) {

i erhöhen wir hier bei jeder Iteration um 8.

Jetzt schnappen wir uns das aktuelle 8-Bit Stück und speichern es in einer Variablen zwischen:
const curr8Bits = binary.slice(i, i + 8);
Dann können wir das aktuelle 8-Bit Stück in eine Zahl, den ASCII-Code umwandeln:
const currCharCode = parseInt(curr8Bits, 2);
Und jetzt den aktuellen ASCII-Code in ein Zeichen/Buchstaben umwandeln und zu einer Ergebnis-Variablen hinzufügen:
    result += String.fromCharCode(currCharCode);
  }

Die Variable muss natürlich noch oben initialisiert werden.

let result = "";
Nach dem Loop nur noch das Ergebnis zurückgeben:
  return result;
}
Voilá! 💪

Fragen?

Komplettlösung
export function binaryToString(binary: string): string {
  let result = "";

  for (let i = 0; i < binary.length; i += 8) {
    const curr8Bits = binary.slice(i, i + 8);
    const currCharCode = parseInt(curr8Bits, 2);

    result += String.fromCharCode(currCharCode);
  }

  return result;
}

Feedback

Schreib mir!