2011-09-18 11 views

Odpowiedz

5

Zgodnie z wikipedia, UCS-2 should always be big-endian, więc to dziwne, że węzeł obsługuje tylko małego endiana. Możesz rozważyć zgłoszenie błędu. Powiedział, że zmiana endian-ness jest dość prosta, ponieważ jest to tylko kwestia kolejności bajtów. Więc po prostu zamień bajty, aby przejść między małymi a dużymi endianami, tak:

function swapBytes(buffer) { 
    var l = buffer.length; 
    if (l & 0x01) { 
    throw new Error('Buffer length must be even'); 
    } 
    for (var i = 0; i < l; i += 2) { 
    var a = buffer[i]; 
    buffer[i] = buffer[i+1]; 
    buffer[i+1] = a; 
    } 
    return buffer; 
} 
+0

Chodzi o to, co zrobiłem. Złożę raport o błędzie. – skeggse

+3

Albo nie ... najwyraźniej im się to nie podoba. https://github.com/joyent/node/issues/1684 – skeggse