Quelqu'un peut-il me donner quelques conseils s'il vous plaît?
J'ai une chaîne, par exemple "01001011" et ce que je dois faire est de l'inverser, j'ai donc utilisé .split('')
que .reverse()
et maintenant je dois lire le tableau comme une chaîne et le convertir en entier. C'est possible?
Merci
Si vous souhaitez reconvertir le tableau en chaîne, utilisez join()
( MDN ) et pour convertir une chaîne en entier, utilisez parseInt()
( MDN ). Le deuxième argument de ce dernier est un radix facultatif.
JavaScript va essayer de déterminer quel radix utiliser, mais pour être sûr, vous devez toujours ajouter votre radix manuellement. Citant de MDN:
Si radix n'est pas défini ou 0, JavaScript suppose ce qui suit:
Si la chaîne d'entrée commence par "0x" ou "0X", le radix est 16 (hexadécimal).
Si la chaîne d'entrée commence par "0", radix est huit (octal). Cette fonctionnalité n'est pas standard, et certaines implémentations ne la prennent délibérément pas en charge (à la place, elles utilisent le radix 10). Pour cette raison, spécifiez toujours un radix lorsque vous utilisez parseInt.
Si la chaîne d'entrée commence par une autre valeur, le radix est 10 (décimal).
Donc, dans votre cas, le code suivant devrait fonctionner:
var a = '01001011';
var b = parseInt( a.split('').reverse().join(''), 2 );
ou simplement (si vous souhaitez convertir la chaîne de départ, sans l'inversion):
var b = parseInt( a, 2 );
Appelez simplement parseInt
avec un radix différent, dans ce cas, utilisez 2 pour le binaire.
var a = parseInt("01001011", 2);
// a === 75
parseInt
tente de comprendre le radix lui-même lorsque vous ne le spécifiez pas explicitement. Du Mozilla Developer Network :
Si radix est
undefined
ou 0, JavaScript suppose ce qui suit:
- Si l'entrée
string
commence par "0x" ou "0X", le radix est 16 (hexadécimal).- Si l'entrée
string
commence par "0", radix est huit (octal). Cette fonctionnalité n'est pas standard, et certaines implémentations ne la prennent délibérément pas en charge (à la place, elles utilisent le radix 10). Pour cette raison spécifiez toujours un radix lorsque vous utilisezparseInt
.- Si l'entrée
string
commence par une autre valeur, le radix est 10 (décimal).
Dans ce cas, il est essentiel que vous spécifiez le radix, sinon il peut être interprété comme un nombre décimal ou octal. En règle générale, spécifiez toujours le radix.
Cela prendra un hex tampon et le convertira en une chaîne binaire et reviendra à l'hex tampon.
REMARQUE: quand je dis un hex de tampon, je veux dire une valeur décimale car lorsque vous parcourez un tampon et tirez chaque élément du tableau, cela vous donne la valeur décimale (par exemple: 210, au lieu de d2).
var buffer - new Buffer([0, 210, 242]); // Node
// var arrayBuffer = new ArrayBuffer(3); // JavaScript
// var uint8 = new Uint8Array(arrayBuffer); // JavaScript/ 16Array, 32Array, etc
Besoin de connaître les tampons
Vous allez parcourir le tampon avec une for(){}
et à l'intérieur, vous pouvez faire quelque chose comme:
(210).toString(2); // '11010010'
(210).toString(16); // 'd2' (untested)
(210).toString(8); // (Octal-Digits representation)
parseInt((210).toString(2), 2); // 210
parseInt((210).toString(2), 2).toString(16); // 'd2'
De toute évidence, au lieu d'utiliser "(210).toString(2)
" IN YOU FOR LOOP, vous utiliseriez "(buffer[i]).toString(2)
"
Endian Rep dépend de vous! :) (array.reverse ())
J'espère que cela t'aides!
PS. parseInt(('00000' + (210).toString(2).substring(5, 8)), 2); // 2
parseInt((210).toString(2).substring(5, 8), 2); // 2