Node.JS Big-Endian UCS-2 [英] Node.JS Big-Endian UCS-2

查看:336
本文介绍了Node.JS Big-Endian UCS-2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm working with Node.JS. Node's buffers support little-endian UCS-2, but not big-endian, which I need. How would I do so?

推荐答案

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

According to wikipedia, UCS-2 should always be big-endian so it's odd that node only supports little endian. You might consider filing a bug. That said, switching endian-ness is fairly straight-forward since it's just a matter of byte order. So just swap bytes around to go back and forth between little and big endian, like so:

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

这篇关于Node.JS Big-Endian UCS-2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆