2009-11-05 5 views
9

Ist es möglich, Binärdaten in JavaScript zu erkennen?Nicht-druckbare Zeichen in JavaScript erkennen

Ich möchte in der Lage sein, binäre Daten zu erkennen und für eine bessere Lesbarkeit/Fehlersuche in Hex umzuwandeln.


Nach mehr Untersuchung ich, dass das Erkennen von Binärdaten realisiert habe nicht die richtige Frage ist, da Binärdaten reguläre Zeichen enthält und nicht druckbare Zeichen.

Outis Frage und Antwort (/ [\ x00- \ x1F] /) ist wirklich das Beste, was wir tun können, um Binärzeichen zu erkennen.

Hinweis: Sie müssen Zeilenvorschübe und möglicherweise andere Zeichen aus Ihrer ASCII-Zeichenfolge entfernen, damit die Überprüfung funktioniert.

+0

zu erkennen, wo? –

Antwort

17

Wenn durch "binäre", meinen Sie "enthält nicht druckbare Zeichen", versuchen:

/[\x00-\x1F]/.test(data) 

Wenn Leerzeichen wird als nicht-binäre Daten, versuchen:

/[\x00-\x08\x0E-\x1F]/.test(data) 

Wenn Sie wissen, die Zeichenfolge entweder ASCII oder binär, Verwendung:

/[\x00-\x1F\x80-\xFF]/.test(data) 

oder:

/[\x00-\x08\x0E-\x1F\x80-\xFF]/.test(data) 
+0

Ich denke du meinst 'regexp.test (data)'. Außerdem ist das Tab-Zeichen druckbar. – pimvdb

+0

"nicht druckbar" im Sinne des [POSIX Locale-Standards, §7.3.1] (http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap07.html#tag_07_03_01) (welches die Grundlage für Ähnliches wie ['isprint'] (http://pubs.opengroup.org/onlinepubs/009695399/functions/isprint.html)), da es sich nicht um gedruckte Zeichen handelt, sondern um eine spezielle Aktion des Textverarbeitungsprogramms. Sie haben Recht damit, dass das OP Whitespace als nicht-binäre Daten betrachten könnte. Auch das Argument und das Objekt für "Test" wurden tatsächlich ausgetauscht. – outis

+1

Ich brauchte Tab, um den Test zu bestehen, also benutze ich '/ [\ x00- \ x09 \ x0E- \ x1F] /' – Nathan