2012-12-11 12 views
6

NodeJS docs तनाव है कि binary स्ट्रिंग एन्कोडिंग भारी हतोत्साहित है क्योंकि इसे भविष्य में किसी बिंदु पर गिरा दिया जाएगा।कच्चे बाइनरी बफर में "बाइनरी" एन्कोडेड स्ट्रिंग को डीकोड कैसे करें?

हालांकि, मैं node-imagemagick मॉड्यूल के साथ छवि थंबनेल जेनरेट करने की कोशिश कर रहा हूं, जो केवल binary एन्कोडेड तारों को आउटपुट कर सकता है।

मेरा अंतिम लक्ष्य जेएलओबी के रूप में जेनरेट थंबनेल को SQLite3 डेटाबेस में सबमिट करना है (मैं node-sqlite3 का उपयोग कर रहा हूं), इसलिए मुझे लगा कि मुझे थंबनेल को बाइनरी बफर ऑब्जेक्ट के रूप में चाहिए।

कैसे मैं सीधे एक कच्चे द्विआधारी बफर (न सिर्फ एक बफर शामिल है कि एक binary इनकोडिंग स्ट्रिंग) में node-imagemagick से binary इनकोडिंग उत्पादन डिकोड करते हैं? मैं base64 का उपयोग कर के लिए उत्सुक नहीं हूँ ...

उत्तर

3
var buffer = new Buffer(binaryString, "binary"); 

साथ परीक्षण किया गया:

$ node 
> var binaryString = "\xff\xfa\xc3\x4e"; 
> var buffer = new Buffer(binaryString, "binary"); 
> console.log(buffer); 
<Buffer ff fa c3 4e> 
+0

ओह। वह आसान था। मैंने दस्तावेज़ों का गलत व्याख्या किया ... – Joshua

+1

आपने दस्तावेज़ों का गलत व्याख्या नहीं किया था। वे स्पष्ट रूप से बताते हैं कि "बाइनरी" एन्कोडिंग हटा दी जाएगी! मैं ImageMagick से आउटपुट को मोंगोडीबी में स्टोर करने के दौरान कैप्चर करते समय भी एक ही समस्या के विरुद्ध दौड़ रहा हूं। "बाइनरी" एकमात्र एन्कोडिंग है जो डेटाबेस में STDOUT को सही तरीके से प्राप्त करने के लिए काम करता प्रतीत होता है। तो क्या विकल्प है? –

+0

@WouterHuysentruit लाइफर्स लाइब्रेरी लेखक के साथ गिटब पर अपने मॉड्यूल को बफर का उपयोग करने के लिए अद्यतन करने के लिए एक मुद्दा उठाता है ... यह निश्चित रूप से "बाइनरी" को नोड से हटा दिया जाने से पहले हल हो जाएगा? – Esailija

0

मैं एन्कोडिंग के लिए नोड के बफर का उपयोग नहीं करते।

आप कोशिश कर सकते हैं iconv-lite (https://www.npmjs.com/package/iconv-lite) यह कभी विफल शुरू कर देना चाहिए:

var encode = require("iconv-lite"); 
var binaryString = "\xff\xfa\xc3\x4e"; 
var buffer = encode(binaryString, "binary"); 
console.log(buffer); 
// Prints <Buffer ff fa c3 4e> 
संबंधित मुद्दे