2017-08-30 3 views
0

J'ai un tampon qui est rempli avec un tas de chaînes base64. Je veux un moyen de décoder ces chaînes et être capable de lire toutes les chaînes base64 dans ce tampon.Tampon à 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)); 

Ce que je veux:

YriU6QbcQj6xtdUUosJTxA== 

Ce que je vous attendre à obtenir:

YriU6QbcQj6xtdUUosJTxA== 
Su7Zvq1vRca/teTNfEmfNQ== 

Toute aide est appréciée.

+0

'buffer.toString' Le 2ème et le 3ème paramètre sont' start' et 'end' - étant donné que vous donnez la même valeur pour le début et la fin, le résultat est bien sûr la longueur –

Répondre

2

essayer cette

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() - troisième argument n'est pas la longueur, il est fin décalage.

+0

' buffer.write() - le troisième argument est pas de longueur, c'est un décalage de fin »- non, car écrire c'est une longueur - voir [documentation] (https://nodejs.org/api/buffer.html#buffer_buf_write_string_offset_length_encoding) - vous pouvez en fait faire' buffer.write (slugId2 , SLUGID_SIZE, 'base64'); '- parce que la longueur par défaut est buffer.length - offset - dans ce cas, ce serait SLUGID_SIZE –

+0

Yup, qui l'a fait. Merci pour la réponse rapide! – helfi