J'ai un type d'utilisateur dans des adresses telles que 0x20005c98, que j'appelle dans la méthode POST en utilisant req.body.var. Cependant, j'ai besoin de ce numéro en petit-boutiste pour qu'il affiche 0x985c0020. Est-ce que quelqu'un sait comment convertir ce nombre en petit endian dans le nœud js? Y a-t-il un moyen facile de faire ça?? Le npm network-byte-order est une option ??

1
Baner 11 juil. 2016 à 22:09

2 réponses

Meilleure réponse
var n = 0x20005c98;
var s = n.toString(16).match(/.{1,2}/g);
s.push("0x");
s.reverse().join("").toString(16); // ==> "0x985c0020" (= 2556166176)
3
boehm_s 12 juil. 2016 à 01:10

Version 2.6x plus rapide qui est également plus facile à comprendre car elle fait explicitement ce que vous avez demandé. Mais il suppose un entier de 4 octets.

var n = 0x20005c98;

function ReverseEndian(x) {
    buf = Buffer.allocUnsafe(4)
    buf.writeUIntLE(x, 0, 4)
    return buf.readUIntBE(0, 4)
}

ReverseEndian(n)

J'ai utilisé ça pour chronométrer des trucs :

function timeit(n, x, args) {
    console.time("xxx")
    for (i=0;i<n;++i) {
        x.apply(null, args)
        }
    console.timeEnd("xxx")
}
0
Erik Aronesty 24 mai 2018 à 16:11