2009-11-05 27 views
9

Czy można wykryć dane binarne w JavaScript?Wykryj znaki niedrukowalne w JavaScript

Chciałbym być w stanie wykryć dane binarne i przekonwertować je na hex dla łatwiejszej czytelności/debugowania.


Po więcej dochodzenia I sobie sprawę, że wykrycie dane binarne nie jest właściwe pytanie, ponieważ dane binarne mogą zawierać zwykłe znaki i znaki niedrukowalne.

Pytanie i odpowiedź Outis (/ [\ x00- \ x1F] /) jest naprawdę najlepszą rzeczą, jaką możemy zrobić, aby wykryć znaki binarne.

Uwaga: Aby sprawdzić, czy rzeczywiście działa, należy usunąć posuwy wierszy i ewentualnie inne znaki z sekwencji ciągów ASCII.

+0

wykrywać, gdzie? –

Odpowiedz

17

Jeśli przez "binarny", to znaczy "zawiera znaki niedrukowalne", spróbuj:

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

Jeśli odstępy są uważane za dane non-binarne, spróbuj:

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

Jeśli znasz łańcuch jest albo ASCII lub binarne, zastosowanie:

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

czyli

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

Myślę, że masz na myśli 'regexp.test (data)'. Ponadto znak tabulacji można wydrukować. – pimvdb

+0

"niedrukowalny" w rozumieniu standardu [POSIX Locale, §7.3.1] (http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap07.html#tag_07_03_01) (który jest podstawą takie jak ['isprint'] (http://pubs.opengroup.org/onlinepubs/009695399/functions/isprint.html)), ponieważ nie są drukowanymi znakami, ale raczej wymagają od procesora tekstu podjęcia specjalnej akcji. Masz rację, że OP może chcieć wziąć pod uwagę, że białe znaki są danymi innymi niż binarne. Również argument i obiekt dla 'testu' został faktycznie zamieniony. – outis

+1

Potrzebowałem Tab, aby przejść test, więc używam '/ [\ x00- \ x09 \ x0E- \ x1F] /' – Nathan

Powiązane problemy