2010-10-29 18 views
1

J'ai un tableau de caractères "data" et un "dictIdFrame" Int32. Je voudrais que dictIdFrame prenne la valeur en ASCII (0-255) de données [i, ..., i + 3], je veux dire les quatre octets deviennent un seul int32, où les données [i] est le moins significatif et les données [i + 3] est le plus significatif dans cet int32. Je ne sais vraiment pas comment le faire ...Char array à Int32 en Javascript

var data = "asdfasdfasdfasdf"; 

for (var i=1; i<data.length; i++) 
{ 
    var dictIdFrame = // Here statement taking data[i],data[i+1],data[i+2],data[i+3] 
} 

Si possible en une seule instruction. MERCI DE VOTRE AIDE!!

Répondre

1
// assume in group of 4: 
for (var i = 0; i < data.length; i += 4) { 
    var a = data.charCodeAt(i); 
    var b = data.charCodeAt(i+1); 
    var c = data.charCodeAt(i+2); 
    var d = data.charCodeAt(i+3); 
    var dictIdFrame = a | b << 8 | c << 16 | d << 24; 
} 

(Notez, cependant, qu'une chaîne en Javascript contient des caractères UTF-16, non octets ASCII. Par conséquent, il est possible que .charCodeAt renvoie un nombre ≥ 256.)