Dies ist eine Code-Golf-Herausforderung. Schreiben Sie, wie der Titel schon sagt, ein Programm, um eine Folge von ASCII-Zeichen in binäre Zeichen umzuwandeln.
Beispielsweise:
"Hello World!"
sollte sich verwandeln in
1001000 1100101 1101100 1101100 1101111 100000 1010111 1101111 1110010 1101100 1100100 100001
.
Hinweis: Ich interessiere mich besonders für eine Pyth-Implementierung.
code-golf
string
binary
conversion
ericmarkmartin
quelle
quelle
Antworten:
CJam, 8 Bytes
Kinderleicht:
Probieren Sie es hier aus
quelle
Python 3, 41 Bytes
Wie die Antwort von KSFT , aber ich dachte, ich würde darauf hinweisen, dass
raw_input -> input
Python 3 auch hier einen Vorteil hat, weil es für Splat sorgtprint
.quelle
Pyth, 10 Bytes
Python-Mapping und Erklärung:
Eingabe ist die Zeichenfolge, die ohne Anführungszeichen konvertiert werden muss.
Probieren Sie es hier aus
quelle
Psum(d).append(Pfilter(lambda T:gte(head(join(Plen(k),Plen())))))
, whee d = '' und k = ''. Also nein, es ist überhaupt nicht gültig.Python 3 - 43 Bytes
Nicht ganz der kürzeste, aber ein interessanter Ansatz IMO. Es hat den zusätzlichen Vorteil, dass, wenn die Anzahl der signifikanten Bits variiert, EG das
Hi!
Auffüllen mit Nullen trivial ist (2 weitere Bytes im Gegensatz zu 9 für.zfill(8)
):quelle
Python - 52
Ich werde daran arbeiten, dies in Pyth zu übersetzen.Jemand anderes hat bereits eine Pyth-Antwort gegeben.Wenn es Ihnen egal ist, ob es sich um ein vollständiges Programm oder ein E / A-Format handelt und Sie Python 3 verwenden, können Sie dies in 23 Bytes tun:
x
ist der Eingang.Ich weiß, dass dies nicht zählt, da der Interpreter nicht veröffentlicht wurde, bevor die Herausforderung veröffentlicht wurde, aber hier ist es in KSFTgolf:
quelle
Ruby,
342824 BytesÜbernimmt die Eingabe über STDIN. 6 Bytes gespart danke für AShelly und weitere 4 danke an britishtea.
quelle
$<.each_byte{|c|$><<"%b "%c}
String#bytes
anstelle von verwendenString#each_byte
. Die Blockform ist veraltet, aber es funktioniert immer noch :)PowerShell,
63,5946 Bytes-13 Bytes dank @mazzy
Probieren Sie es online!
quelle
Matlab
Dies ist eine anonyme Funktion
Nutzung ist
f('Hello World')
.Alternativ funktioniert nur , wenn
x
als ZeichenfolgeHello World!
im Arbeitsbereich definiert istdec2bin(char(x))
.quelle
char
? Ich denke du meinstdec2bin(x)-'0'
char(x)
Wennx
schon ein String ist, macht das nichts. Sie können es also entfernen, um Platz zu sparen. Auf der anderen Seite ist das Ergebnisdec2bin
eine Zeichenfolge, und ich denke, die Ausgabe sollte Zahlen seinJ - 9
Keine Ahnung, wie man das hintereinander macht, ohne die Länge des Codes zu verdoppeln, ich brauche J-Gurus, um es mir zu sagen :)
quelle
".
am Anfang hinzufügen . Es wertet Ihr Ergebnis so aus, dass es in einer Zeile und durch Leerzeichen getrennt ist. Auch ist kürzer Base10 Zahlen mit den Ziffern base2 zu erstellen:10#.#:3&u:
.Java - 148 Bytes
Bearbeitet, um die gesamte Datei einzuschließen
quelle
for(char c:a[0].toCharArray()){
oder sogar,for(byte b:a[0].getBytes()){
da die Eingabe ascii ist, vorausgesetzt ein nicht-utf-16-Maschinengebietsschemapublic
und den Programmnamen auf ein einzelnes Zeichen verkürzen, um mehr Bytes zu gewinnen. Plus,(String[]a)
wird vom Compiler perfekt akzeptiert und bringt Ihnen ein weiteres Byte ein.JavaScript ES6, 63
65BytesDies ist ziemlich lang, dank der langen Funktionsnamen von JavaScript. Das folgende Stack-Snippet ist das grobe ES5-Äquivalent, sodass es in jedem Browser ausgeführt werden kann. Vielen Dank an edc65 für die Golfverbesserungen.
quelle
[for of]
ist etwas kürzer als[...].map
die Aufzählung von Zeichen in Zeichenketten:alert([for(c of prompt())c.charCodeAt().toString(2)].join(' '))
.join(' ')
mit.join` `
. Sie können eine Menge Bytesprompt
alert
Scala -
59- 55 BytesNormalerweise sollte man foreach und nicht map verwenden.
quelle
8088 Maschinencode, IBM PC DOS,
3331 Bytes *Auflistung:
Komplette ausführbare PC-DOS-COM-Datei, Eingabe erfolgt über Kommandozeile.
Mit führenden Nullen:
Laden Sie ASCBIN.COM herunter und testen Sie es .
Oder 39 Bytes ohne führende Nullen:
Laden Sie ASCBIN2.COM herunter und testen Sie es .
* Da mir nicht explizit klar war, ob führende Nullen zulässig sind, poste ich Versionen in beide Richtungen.
quelle
MITS Altair 8800 , 0 Bytes
Die Eingabezeichenfolge befindet sich an der Speicheradresse
#0000H
( zulässig ). Binäre Ausgabe über E / A-Anzeigen an der VorderseiteD7-D0
.Zum Beispiel tun
RESET
, dannEXAMINE
, um das erste Byte zu sehen, gefolgt von der WiederholungEXAMINE NEXT
, um den Rest zu sehen."H" = 01 001 000:
"e" = 01 100 101:
"l" = 01 101 100:
Probieren Sie es online!
Natürlich nicht im Wettbewerb. :)
quelle
Haskell, 65
starker Gebrauch der Liste Monade. Es konnte nicht in Listenverständnisse konvertiert werden, da die letzten Anweisungen keine waren
return
.quelle
C ++ - 119 Bytes
Speicher freigeben? Was ist das?
(MSVC kompiliert den Code mit Warnung)
quelle
main(int c,char**v){char x[9];for(;c=*(v[1]++);printf("%s ",itoa(c,x,2)));}
Gelee , 3 Bytes
Probieren Sie es online!
quelle
Tcl , 52 Bytes
Probieren Sie es online!
quelle
binary scan [join $argv] B* b;puts [regsub -all .{8} $b {& }]
APL (Dyalog) , 12 Bytes
Probieren Sie es online!
Vielen Dank an Adám für die Hilfe bei dieser Lösung.
quelle
Python 3.6 , 39 Bytes
Probieren Sie es online!
quelle
Commodore VIC-20 / C64 / 128 und TheC64Mini, 101 tokenisierte BASIC-Bytes
Hier ist die verschleierte Auflistung mit den Schlüsselwortabkürzungen von Commodore BASIC:
Hier zur Erläuterung die nicht verschleierte symbolische Auflistung:
Die Funktion
fn b
der Linie erklärt Null annimmt einen numerischen Parameter vonx
demAND
mit dem Wert von edb
; SGN wird dann zum Konvertierenx and b
in1
oder verwendet0
.Zeile eins akzeptiert eine Zeichenfolgeeingabe für die Variable
a$
, und die Schleife beginnt (bezeichnet miti
) mit der Länge dieser Eingabe.b
repräsentiert jedes Bit vom 6. bis zum 0. Bit.c$
Nimmt jedes Zeichen der Zeichenfolge an der Positioni
.Zeile 5 startet die Schleife, um jede Bitposition zu testen;
right$
wird in Zeile 6 verwendet, um ein Problem mit der automatischen Formatierung zu beheben, wenn Commodore BASIC eine Zahl anzeigt und die Ausgabe vonfn b
in eine Zeichenfolge konvertiert .asc(c$)
konvertiert das aktuelle Zeichen in seinen ASCII-Code als Dezimalwert.Zeile 7 repräsentiert den nächsten Bitwert. Die Schleife
j
wird beendet, bevor ein Leerzeichen gedruckt wird. Dann wird die letzte Schleifei
beendet.quelle
JavaScript ES6, 71 Byte
quelle
.split('')
an der leeren Zeichenfolge teilen;.split()
verwandelt sich"abc"
in["abc"]
.Viertens (gviertens) , 45 Bytes
Probieren Sie es online!
Code-Erklärung
quelle
Ruby, 24 Bytes
Ich hatte gehofft, Martin Ender schlagen zu können , aber ich habe es nur geschafft, ihn zu binden.
Übernimmt die Eingabe für STDIN; +1 Byte für
-p
Flag.Probieren Sie es online!
quelle
Gaia , 4 Bytes
Ziemlich zufrieden damit
Wie es funktioniert
Probieren Sie es online!
quelle
Python 3 , 39 Bytes
Probieren Sie es online!
Leichte Verbesserung gegenüber der derzeit führenden Python-Antwort
quelle
STATA 158
Ich habe einen anderen Ansatz gewählt als die meisten anderen. Einlesen über die Eingabeaufforderung display _request () (verkürzt auf di _r (r)). Schreiben Sie die Zeichenfolge im Textmodus in eine Datei mit dem Namen b. Öffnen Sie b im Binärmodus und lesen Sie jedes Zeichen als Byte und konvertieren Sie es in Binär. Technisch sollte die b-Datei am Ende geschlossen werden, aber es ist ein gültiges Programm und läuft erfolgreich ohne es.
quelle
Golang - 68
Ich bin neu in Go und bin mir nicht sicher, nach welchen Regeln Charaktere in dieser Sprache gezählt werden.
Importe (11 Bytes):
Funktion (55 Bytes):
Sie können es hier ausführen .
quelle
Niemals wird C # diese Art von Fragen gewinnen, aber hier ist ein Versuch, völlig ohne Codierung. :)
C # - 84
quelle
x=>String.Join(" ",x.Select(y=>Convert.ToString(y,2)));
Beachten Sie jedoch, dass aufgrund der Verwendung.Select()
dieser kürzeren Antwort und Ihrer ursprünglichen Antwort die 18 Bytes eingeschlossen werden müssenusing System.Linq;
, es sei denn, Sie geben an, dass der Visual C # Interactive Compiler verwendet wird , die standardmäßigCobra - 64
Als Lambda:
quelle