2017-08-30 67 views
0

我有一個緩衝區正在填充一堆base64字符串。我想要一種方法來解碼這些字符串,並能夠讀取該緩衝區中的所有base64字符串。緩衝區到base64 | Node.js

const slugId1 = 'YriU6QbcQj6xtdUUosJTxA=='; 
const slugId2 = 'Su7Zvq1vRca/teTNfEmfNQ=='; 
const SLUGID_SIZE = 16; 

let buffer = Buffer.alloc(SLUGID_SIZE * 2); 

buffer.write(slugId1, 0, SLUGID_SIZE, 'base64'); 
buffer.write(slugId2, SLUGID_SIZE, SLUGID_SIZE, 'base64'); 

console.log(buffer.toString('base64', 0, SLUGID_SIZE)); 
console.log(buffer.toString('base64', SLUGID_SIZE, SLUGID_SIZE)); 

我得到什麼:

YriU6QbcQj6xtdUUosJTxA== 

我希望得到什麼:

YriU6QbcQj6xtdUUosJTxA== 
Su7Zvq1vRca/teTNfEmfNQ== 

任何幫助表示讚賞。

+0

'buffer.toString'第二個和第三個參數是'start'和'end' - 給定的開始和結束的值相同,結果當然是零長度 –

回答

2

嘗試這種

const slugId1 = 'YriU6QbcQj6xtdUUosJTxA=='; 
const slugId2 = 'Su7Zvq1vRca/teTNfEmfNQ=='; 
const SLUGID_SIZE = 16; 

let buffer = Buffer.alloc(SLUGID_SIZE * 2); 

buffer.write(slugId1, 0, SLUGID_SIZE, 'base64'); 
buffer.write(slugId2, SLUGID_SIZE, SLUGID_SIZE, 'base64'); 

console.log(buffer.toString('base64', 0, SLUGID_SIZE)); 
console.log(buffer.toString('base64', SLUGID_SIZE, SLUGID_SIZE * 2)); 

buffer.toString() - 第三個參數是不長,它是端偏移。

+0

'buffer.write() - 第三個參數是不是長度,它是結束偏移量 - 不,編寫它是一個長度 - 請參閱[文檔](https://nodejs.org/api/buffer.html#buffer_buf_write_string_offset_length_encoding) - 實際上您可以執行'buffer.write(slugId2 ,SLUGID_SIZE,'base64');' - 因爲長度默認爲buffer.length - offset - 在這種情況下,它會是SLUGID_SIZE –

+0

是的,就是這樣。感謝您及時的回覆! – helfi