2009-11-05 36 views
9

Có thể phát hiện dữ liệu nhị phân trong JavaScript không?Phát hiện các ký tự không in được trong JavaScript

Tôi muốn có thể phát hiện dữ liệu nhị phân và chuyển đổi dữ liệu đó thành hex để dễ đọc/gỡ lỗi hơn.


Sau khi điều tra thêm, tôi nhận thấy rằng phát hiện dữ liệu nhị phân không phải là câu hỏi đúng, vì dữ liệu nhị phân có thể chứa ký tự thông thường và ký tự không thể in.

Câu hỏi và câu trả lời của Outis (/ [\ x00- \ x1F] /) thực sự là điều tốt nhất mà chúng tôi có thể thực hiện trong nỗ lực phát hiện các ký tự nhị phân.

Lưu ý: Bạn phải xóa nguồn cấp dữ liệu dòng và có thể các ký tự khác khỏi chuỗi chuỗi ascii của bạn để séc thực sự hoạt động.

+0

để phát hiện ở đâu? –

Trả lời

17

Nếu bởi "nhị phân", bạn có nghĩa là "chứa các ký tự không thể in được", hãy thử:

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

Nếu khoảng trắng được coi là dữ liệu phi nhị phân, hãy thử:

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

Nếu bạn biết chuỗi là một trong hai ASCII hoặc nhị phân, sử dụng:

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

hay:

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

Tôi nghĩ bạn có nghĩa là 'regexp.test (dữ liệu)'. Ngoài ra, ký tự tab có thể in được. – pimvdb

+0

"không thể in" theo nghĩa [tiêu chuẩn Locix Locale, §7.3.1] (http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap07.html#tag_07_03_01) (là cơ sở cho thích ['isprint'] (http://pubs.opengroup.org/onlinepubs/009695399/functions/isprint.html)) vì chúng không phải là các ký tự được in mà yêu cầu bộ xử lý văn bản thực hiện một số hành động đặc biệt. Bạn nói đúng rằng OP có thể muốn xem xét khoảng trắng là dữ liệu không phải nhị phân. Ngoài ra, đối số và đối tượng cho 'test' thực sự đã được hoán đổi. – outis

+1

Tôi cần Tab để vượt qua bài kiểm tra, vì vậy tôi đang sử dụng '/ [\ x00- \ x09 \ x0E- \ x1F] /' – Nathan

Các vấn đề liên quan