2013-05-17 4 views
0

Я следующий код:Binary конкатенации

var packet = "\xFF\xFF\xFF\xFF"; 
packet += "\x6D"; 
packet += "127.0.0.1:" + this.port; 
packet += "\x00"; 
packet += this.name; 
packet += "\x00"; 
packet += this.state; 
packet += "\x00"; 
packet += "stateA"; 
packet += "\x00"; 
packet += "sender"; 
packet += "\x00"; 

И я var id = 32;

Я хочу, чтобы получить что-то вроде этого:

... 
packet += "\x00"; 
packet += "sender"; 
packet += "\x00"; 
packet += "\x20; 

Как конвертировать id номер в шестнадцатеричном формате, а затем объединить его с packet?

Я уже видел Google, но я не нашел решения.

спасибо.

+0

[Как преобразовать десятичные слова в hex в javascript] (http://stackoverflow.com/a/57805/1053938) – jonhopkins

+0

Возможный дубликат [Как преобразовать десятичный код в hex в JavaScript?] (Http: // stackoverflow. com/questions/57803/how-to-convert-decimal-to-hex-in-javascript) – TheHippo

+2

Почему вы используете строки, а не буферы? –

ответ

4

Вы можете использовать toString() function of the Number prototype, чтобы получить шестигранный представление о номере:

var hex = (23).toString(16); 

// or 

var hex = id.toString(16); 

EDIT

Кажется, вы просто хотите добавить символ Юникода, идентифицированный id. Для этого используйте String.fromCharCode()

packet += String.fromCharCode(id); 
+0

Я уже сделал это, но: 'package + =" \\ x "+ id.toString (16);' Не работает. – user0103

+0

@ WasimAbu-Nassar См. Мое редактирование. – Sirko

+0

безупречный, спасибо. – user0103

2

Вы можете использовать String.fromCharCode функцию:

packet += String.fromCharCode(32); // " " 

Если вы хотите, чтобы получить шестигранный представление, вы можете использовать

var hex = (32).toString(16), // "20" 
    byte = JSON.parse('"\\u'+('000'+hex).slice(-4)+'"'); // " " == "\u0020" 

... но это некрасиво: -)