2009-11-05 18 views
9

¿Es posible detectar datos binarios en JavaScript?Detectar caracteres no imprimibles en JavaScript

Me gustaría poder detectar datos binarios y convertirlos a hexadecimal para facilitar la lectura/depuración.


Después de más investigación me he dado cuenta de que la detección de datos binarios no es la pregunta correcta, ya que los datos binarios pueden contener caracteres regulares, y los caracteres no imprimibles.

La pregunta y respuesta de Outis (/ [\ x00- \ x1F] /) es realmente lo mejor que podemos hacer en un intento de detectar caracteres binarios.

Nota: Debe eliminar los datos de línea y posiblemente otros caracteres de la secuencia de secuencia de ASCII para que la comprobación realmente funcione.

+0

para detectar dónde? –

Respuesta

17

Si por "binario", que quiere decir "contiene caracteres no imprimibles", trate de:

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

Si los espacios en blanco se considera los datos no binarios, intente:

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

Si conoces la cadena es ASCII o binario, utilice:

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

o:

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

Creo que te refieres a 'regexp.test (data)'. Además, el carácter de tabulación es imprimible. – pimvdb

+0

"no imprimible" en el sentido del [estándar postal POSIX, §7.3.1] (http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap07.html#tag_07_03_01) (que es la base para los gustos de ['isprint'] (http://pubs.opengroup.org/onlinepubs/009695399/functions/isprint.html)) ya que no son caracteres que se imprimen, sino que requieren que el procesador de texto tome alguna acción especial. Tiene razón en que el OP puede considerar que los espacios en blanco sean datos no binarios. Además, el argumento y el objeto para 'test' se intercambiaron. – outis

+1

Necesitaba la pestaña para pasar la prueba, entonces estoy usando '/ [\ x00- \ x09 \ x0E- \ x1F] /' – Nathan

Cuestiones relacionadas