【发布时间】:2011-11-19 12:50:01
【问题描述】:
我正在使用 Node.JS。 Node's buffers 支持 little-endian UCS-2,但不支持我需要的 big-endian。我该怎么做?
【问题讨论】:
标签: javascript unicode node.js buffer endianness
我正在使用 Node.JS。 Node's buffers 支持 little-endian UCS-2,但不支持我需要的 big-endian。我该怎么做?
【问题讨论】:
标签: javascript unicode node.js buffer endianness
根据维基百科,UCS-2 should always be big-endian 所以奇怪的是节点只支持小端。您可能会考虑提交错误。也就是说,切换字节序相当简单,因为它只是字节顺序的问题。所以只需交换字节以在小端和大端之间来回切换,如下所示:
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;
}
【讨论】: