2009-11-05 19 views
9

में गैर-प्रिंट करने योग्य वर्णों का पता लगाएं जावास्क्रिप्ट में बाइनरी डेटा का पता लगाना संभव है?जावास्क्रिप्ट

मैं बाइनरी डेटा का पता लगाने और इसे आसान पठनीयता/डिबगिंग के लिए हेक्स में परिवर्तित करने में सक्षम होना चाहता हूं।


अधिक जांच के बाद मुझे एहसास हुआ है कि बाइनरी डेटा का पता लगाने के सही सवाल नहीं है, क्योंकि बाइनरी डेटा नियमित वर्ण, और प्रिंट न हो सकने वर्ण हो सकते हैं।

आउटिस का प्रश्न और उत्तर (/ [\ x00- \ x1F] /) वास्तव में सबसे अच्छा है जो हम बाइनरी वर्णों का पता लगाने के प्रयास में कर सकते हैं।

नोट: आपको वास्तव में काम करने के लिए चेक के लिए अपने एसीआई स्ट्रिंग अनुक्रम से लाइन फ़ीड्स और संभावित रूप से अन्य वर्णों को हटाना होगा।

+0

कहां से पता लगाने के लिए? –

उत्तर

17

तो द्वारा "बाइनरी", आप मतलब है "प्रिंट न हो सकने वर्ण हैं", कोशिश:

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

तो खाली स्थान के माना जाता है गैर बाइनरी डेटा, कोशिश:

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

यदि आप जानते हैं स्ट्रिंग या तो ASCII या द्विआधारी, इस्तेमाल होता है:

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

या:

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

मुझे लगता है कि आपका मतलब है 'regexp.test (डेटा) '। इसके अलावा, टैब चरित्र प्रिंट करने योग्य है। – pimvdb

+0

[POSIX लोकेल मानक, §7.3.1] (http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap07.html#tag_07_03_01) के अर्थ में "गैर-प्रिंट करने योग्य" (जो आधार है ['isprint'] की पसंद (http://pubs.opengroup.org/onlinepubs/009695399/functions/isprint.html)) क्योंकि वे मुद्रित वर्ण नहीं हैं बल्कि टेक्स्ट प्रोसेसर की कुछ विशेष कार्रवाई करने की आवश्यकता है। आप सही हैं कि ओपी व्हाइटसाइट को गैर-बाइनरी डेटा होने पर विचार करना चाह सकता है। इसके अलावा, 'परीक्षण' के लिए तर्क और वस्तु वास्तव में बदल दी गई थी। – outis

+1

मुझे परीक्षण पास करने के लिए टैब की आवश्यकता है, इसलिए मैं '/ [\ x00- \ x09 \ x0E- \ x1F] /' – Nathan