2017-04-13 4 views
0

Je suis face à problème pour obtenir des données à partir d'un fichier comme un tampon, puis le convertir en un code long de l'échantillon estobtenir 4 octets à partir d'un fichier et le convertir en timestamp

var fs = require('fs'); 

fs.open('24.mkt', 'r', function(status, fd) { 
    if (status) { 
    console.log(status.message); 
    return; 
    } 
    var buffer = new Buffer(4); 
    fs.read(fd, buffer, 0, 4, 0, function(err, num) { 
    console.log(buffer.values()); 
    }); 
}); 
lien fichier

->https://archive.org/download/kamo_24/24.mkt

4 premiers octets contient Horodatage à long en 4 octets

+0

double possible de [JavaScript: lecture 3 octets tampon comme un entier] (http: // stackoverflow.com/questions/30911185/javascript-reading-3-bytes-buffer-as-an-integer) –

Répondre

0

Vous voulez probablement utiliser readUInt32BE and/or readUInt32LE (de buffer) pour convertir les valeurs tampons nombre.

Vous pouvez également essayer de convertir une valeur dans un tampon à la valeur numérique à l'aide node-bigint ou node-bignum (il est probablement trop pour un 4 octets cas, mais si vous avez besoin pour faire face à un plus grand nombre, il peut convenir à la nécessité), les deux permettent création de tampon sous une forme similaire (juste être conscient des différences de choix):

bignum.fromBuffer(buf, opts) 
// or 
bigint.fromBuffer(buf, opts) 
1

Vous pouvez utiliser la fonction Buffer.readInt32BE de Node.js. Il lit 4 octets dans l'ordre donné (Big, ou peu endian) à une variable, à partir du paramètre offset:

// Unix timestamp now: 1492079016 
var buffer = Buffer.from([0x58, 0xEF, 0x51, 0xA8]); 
var timestamp = buffer.readInt32BE(0); 

process.stdout.write(timestamp.toString());