【问题标题】:Converting a hex string into a BYTE array JS将十六进制字符串转换为 BYTE 数组 JS
【发布时间】:2012-04-12 10:08:52
【问题描述】:

我在这方面已经有一段时间了,而且我是使用 JS 编程的新手。我正在使用 JS、HTML5、node 和 socket.io 制作游戏。我现在正在研究协议,我正在发送十六进制的服务器字符串。

字符串的一个例子是:00010203040506070809

我很难将其转换为:0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09

我计划做的是获取这些自定义数据包并根据这些数据包在我的服务器上设置一个开关。比如:

BYTE HEADER | + Packet
0x00        | 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09

然后我调用:parsepacket(header, data, len);

function parsepacket(header, data, len){
switch(header)
{
case '0x00':    // not hexed
console.log('The client wants to connect');
// Do some stuff to connect
break;

case '0x01':
console.log('0x01');
break;

case '0x02':
console.log('0x02!');
break;
}
};

有人知道怎么做吗?

【问题讨论】:

标签: javascript node.js websocket socket.io


【解决方案1】:

我不确定这是您想要的,但您可以将字符串转换为十六进制值数组,如下所示:

var str = "00010203040506070809",
    a = [];

for (var i = 0; i < str.length; i += 2) {
    a.push("0x" + str.substr(i, 2));
}

console.log(a); // prints the array
console.log(a.join(" ")); // turn the array into a string of hex values
​console.log(parseInt(a[1], 16));​ // parse a particular hex number to a decimal value

【讨论】:

  • 这正是我想要的!太棒了! :-)
  • 你不需要在十六进制值之前添加0x来解析它。
猜你喜欢
  • 1970-01-01
  • 2015-07-30
  • 2019-10-03
  • 2018-01-31
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多