1

私は少しの間これに取り組んできました、そして私はJSでプログラミングするのが初めてです。JS、HTML5、node、socket.ioを使ってゲームを作っています。私は現在プロトコルに取り組んでおり、16進数のサーバー文字列を送信しています。

文字列の例は次のようになります:000010203040506070809

次のように変換するのに苦労しています: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;
}
};

誰かがこれを行う方法を知っていますか?

4

1 に答える 1

10

これがあなたが求めているものかどうかはわかりませんが、文字列を次のように16進値の配列に変換できます。

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
于 2012-04-12T10:24:27.277 に答える