2012-04-12 48 views
1

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

文字列の例は次のようになります。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; 
} 
}; 

誰でもこの方法を知っていますか?

+0

これは便利かもしれません。http://nodejs.org /api/buffer.html –

答えて

7

私は、これはあなたが後にしているものですわからないんだけど、あなたは、このような進値の配列に文字列を変換することができます

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 
+0

まさに私が望んでいたことですね!ブラボー! :-) – user1328762

+0

これを解析するために16進値の前に '0x'を追加する必要はありません。 – Supersharp

関連する問題