2009-11-05 13 views
9

È possibile rilevare dati binari in JavaScript?Rileva caratteri non stampabili in JavaScript

Mi piacerebbe essere in grado di rilevare dati binari e convertirlo in esadecimale per facilitare la lettura/il debug.


Dopo ulteriori indagini ho capito che la rilevazione di dati binari non è la domanda giusta, perché i dati binari possono contenere caratteri normali e caratteri non stampabili.

Le domande e le risposte di Outis (/ [\ x00- \ x1F] /) sono davvero le migliori che possiamo fare nel tentativo di rilevare i caratteri binari.

Nota: è necessario rimuovere i feed di riga e eventualmente altri caratteri dalla sequenza di stringhe ascii affinché il controllo funzioni effettivamente.

+0

per rilevare dove? –

risposta

17

Se per "binario", vuol dire "contiene caratteri non stampabili", provare:

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

Se spazio bianco è considerato i dati non binari, provare:

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

Se si conosce la stringa è o ASCII o binario, uso:

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

o:

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

Penso che intendiate 'regexp.test (data)'. Inoltre, il carattere di tabulazione è stampabile. – pimvdb

+0

"non stampabile" nel senso dello [standard POSIX Locale, §7.3.1] (http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap07.html#tag_07_03_01) (che è la base per il mi piace di ['isprint'] (http://pubs.opengroup.org/onlinepubs/009695399/functions/isprint.html) in quanto non sono caratteri che vengono stampati, ma richiedono piuttosto che l'elaboratore di testi intraprenda un'azione speciale. Hai ragione nel fatto che l'OP potrebbe voler considerare gli spazi bianchi come dati non binari. Inoltre, l'argomento e l'oggetto per 'test' sono stati effettivamente scambiati. – outis

+1

Ho bisogno di Tab per passare il test, quindi sto usando '/ [\ x00- \ x09 \ x0E- \ x1F] /' – Nathan

Problemi correlati