Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Binärcode Reader (zu Zeichen umwandeln) (Zeichenketten)

Schreiben Sie Programm, dass einen beliebigen Binärcode in lesbare Zeichen umwandelt!

Zu Zeichen zählen alle in Ihrem Code vorkommenden Buchstaben, Sonderzeichen und Ziffern (z. B. "a", ".", "7", "?" oder "!").

Das folgende Beispiel ist im ASCII codiert (American Standard Code for Information Interchange):

Was bedeutet dieser Binärcode: "010010000110000101101100011011000110111100100001"?

Sie dürfen durchaus eine andere Codierung (wie UTF-8 oder EBCDIC) verwenden. Achtung: Die Codierung von Zeichen im ASCII sind im UTF-8 identisch; was aber im ANSI (ISO-LATIN-8859) nicht für alle Zeichen gilt!

2 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

Kommentare (2)

virgil 10. Oktober 2016 23:59   reply report
Ich glaube schon, dass wir mittlerweile zu Unicode fortgeschritten sind— wurde ja auch mal Zeit. Gibt es echt noch Systeme, die mit Unicode nicht klarkommen? Sehr bedauerlich.Da mag man auch gerne noch in Java programmieren, wenn man das will.

Für mich war nach einigem Rumprobrieren eigentlich klar, worum es geht: Teilung der Bits in 8-Abteilungen, und da ASCII/ANSII quasi gleich mit dem UTF-Spektrum sind, ist die Aufgabe letzten Endes ordinär.
gressly 8. Oktober 2016 23:32   reply report
Die Aufgabenstellung ist nicht klar. Soll EBCDIC, ASCII, Ansi oder gar UTF verwendet werden?
Für den Löser der Aufgabe spielt dass dann eine Rolle, wenn sein System (z. B. PL/I auf dem Großrechner) kein ASCII kennt und obiger Code ausgewertet werden sollte. Eventuell kann man hier einen zweiten Binärcode angeben oder die Aufgabe etwas präzisieren.

9 Lösung(en)

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("Binärcode eingeben: ");

		String line = sc.nextLine().replace(" ", "");
		String splitt = Arrays.toString(line.split("(?<=\\G........)"));
		String[] splitted = splitt.replace("[", "").replace("]", "").split(", ");

		sc.close();

		for (String s : splitted) {
			if (s.length() == 8) {
				int i = Integer.parseInt(s, 2);
				System.out.print((char) i);
			} else {
				for (int i = 0; i < 100; i++) {
					System.out.println("ERROR");
				}
			}
		}
	}
}
                

Lösung von: Name nicht veröffentlicht

function bin2txt(input) {
  var output = "",
      i = 0;
  for (i; i < input.length; i += 8)
    output += String.fromCharCode(parseInt(input.substr(i, 8), 2));
  return output;
}

console.log(bin2txt("010010000110000101101100011011000110111100100001"));
                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

import binascii

class binary_reader():
	# From Words to Binary
	def w2b(self):
		print "Please type in your words or sentence to convert them into binary code:"
		words = raw_input(">> ")
		wordsTObinary = bin(int(binascii.hexlify(words), 16)).replace("0b", "")

		print wordsTObinary



	# From Binary to Words
	def b2w(self):
		print "Please type in your binary code to convert them into words or a sentence:"
		b = raw_input(">> ")
		binaries = int(b, 2)
		binaryTOwords = binascii.unhexlify("%x" % binaries)

		print binaryTOwords




if __name__ == '__main__':
    binary_reader().w2b()
    binary_reader().b2w()

                

Lösung von: L. Fino (Lupfig Codes)

'3.3.2017 - PowerBASIC 10
'mit integrierter Umwandlung Binär -> Unicode


#COMPILE EXE
#DIM ALL

FUNCTION PBMAIN () AS LONG

DIM i AS INTEGER
DIM strIn AS STRING
DIM strOut AS STRING

strIn = "010010000110000101101100011011000110111100100001"

FOR i = 1 TO LEN(strIn) STEP 8
   strOut = strOut & CHR$$(VAL("&B" & MID$(strIn,i,8)))
NEXT i

MSGBOX strIn & $CRLF & strOut,,EXE.NAME$

END FUNCTION

                

Lösung von: Markus Sägesser (keine)

'4.3.2017 - PowerBASIC 10
'"manuelle" Umrechnung


#COMPILE EXE
#DIM ALL

FUNCTION PBMAIN () AS LONG

DIM i AS INTEGER
DIM x AS INTEGER
DIM strIn AS STRING
DIM strOut AS STRING
DIM zwStr AS STRING
DIM revStr AS STRING
DIM zwByte AS INTEGER
DIM ascii AS STRING

strIn = "010010000110000101101100011011000110111100100001"

ascii = "!" & $DQ & "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz"

'in 8 Bits splitten
FOR i = 1 TO LEN(strIn) STEP 8
    zwStr = MID$(strIn,i,8)
   'Reihenfolge der Bits umdrehen, um einfacher zu rechnen.
    FOR x = 8 TO 1 STEP - 1
        revStr += MID$(zwStr,x,1)
    NEXT x
    'Wert der Bits anhand der Position errechnen (2^Position - 1 * Wert der Position) -> 2^3 = 8 * 0 (falls nicht gesetzt) oder * 1 (falls gesetzt)
    FOR x = 1 TO 8
        zwByte += 2^(x-1) * VAL(MID$(revStr,x,1))
    NEXT x
    strOut += MID$(ascii,zwByte - 32,1)
    revStr = ""
    zwByte = 0
NEXT i

MSGBOX strIn & $CRLF & strOut,,EXE.NAME$

END FUNCTION

                

Lösung von: Markus Sägesser (keine)

try:
    eingabe_bin = str(input("Bitte Binärzahl eingeben:"))
     if len(eingabe_bin) % 8 != 0:
          print("Es muss eine Binärzahl eingegeben werden, die durch 8 teilbar ist!")
    splits = [eingabe_bin[x:x + 8] for x in range(0, len(eingabe_bin), 8)]  # list comprehension
    for item in range(0, len(splits)):
        dual = int(splits[item], 2)
        uni_code = chr(dual)
        print(uni_code, end="")

except Exception as e:
    print("Es ist etwas schiefgelaufen! \n", e)
                

Lösung von: Dominic Ra ()

/*
 *  Programmieraufgabe: Binärcode Reader (zu Zeichen umwandeln)
 *  https://www.programmieraufgaben.ch/aufgabe/binaercode-reader-zu-zeichen-umwandeln/h8nkecsd
 */


/**
 *  Umwandlung eines Binärcodes in einen String.
 *  Verwendet den US-ASCII Zeichensatz.
 *  @param code Der Binärcode als String.
 *  @return Die Zeichen im Code als String.
 */
fun reader(code: String): String {
    // Ein Byte besteht aus maximal 8 Bits. Sind die Bytes durch
    // Leerzeichen getrennt, dann sind weniger als 8 Bit möglich.
    val bytePattern = Regex("""[01]{1,8}\s*""")
    return bytePattern
            .findAll(code)
            .map { it.value.toByte(2) }
            .toList()
            .toByteArray()
            .toString(Charsets.US_ASCII)
}


/**
 *  Testfall aus der Aufgabe ausführen.
 *  @param args wird ignoriert.
 */
fun main(vararg args: String) {
    val code = "010010000110000101101100011011000110111100100001"
    val result = reader(code)
    assert(result == "Hallo!")
    println("$code = $result")
}

                

Lösung von: Ulrich Berntien ()

inp = input("Binärzahl: ")
print("".join([chr(int(inp[i:i+8], base=2)) for i in range(0, len(inp), 8)]))
                

Lösung von: Name nicht veröffentlicht

// NET 6.x | C# 10.x | VS-2022

string BinToString(string bin) {
    if (bin.Length % 8 != 0) return string.Empty;
    return string.Join("", new System.Text.RegularExpressions.Regex(@"\d{8}").Matches(bin).Select(x => (char)Convert.ToInt32(x.ToString(), 2)));
}

Console.WriteLine(BinToString("010010000110000101101100011011000110111100100001"));
                

Lösung von: Jens Kelm (@JKooP)

Verifikation/Checksumme:

Lösung: "Hallo!"

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 0.5
Schwierigkeit: Mittel
Webcode: h8nk-ecsd
Autor: ()

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen