Node.JS Big-Endian UCS-2

ske*_*gse 6 javascript unicode buffer endianness node.js

我正在使用Node.JS. Node的缓冲区支持little-endian UCS-2,但不支持big-endian,我需要它.我该怎么办?

bro*_*ofa 5

根据维基百科,UCS-2应该始终是big-endian,所以节点只支持小端,这很奇怪.您可以考虑提交错误.也就是说,切换endian-ness是相当直接的,因为它只是字节顺序的问题.所以只需交换字节就可以在小端和大端之间来回切换,如下所示:

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; 
}
Run Code Online (Sandbox Code Playgroud)

  • 或者不......显然他们不喜欢那样.https://github.com/joyent/node/issues/1684 (3认同)