Node.JS Big-Endian UCS-2 - PullRequest
       8

Node.JS Big-Endian UCS-2

5 голосов
/ 18 сентября 2011

Я работаю с Node.JS. Буферы узла поддерживают UCS-2 с прямым порядком байтов, но не с прямым порядком байтов, который мне нужен. Как бы я это сделал?

1 Ответ

5 голосов
/ 18 сентября 2011

Согласно википедии, UCS-2 всегда должен быть с прямым порядком байтов , поэтому странно, что узел поддерживает только младший порядок байтов. Вы можете рассмотреть вопрос об ошибке. Тем не менее, переключение порядка байтов является довольно простым, поскольку это просто вопрос порядка байтов. Так что просто поменяйте местами байты, чтобы переходить между маленьким и старшим порядком байтов, вот так:

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; 
}
...