2016-06-12 18 views
0

Ich benutze chrome.sockets um UDP-Nachrichten zu senden. ich brauche diese c-like-Struktur zu senden:senden c-like struct als arrayBuffer über udp chrome socket

UInt16 ID=0, 
UInt Size=20, 
UInt16 CRC=0, 
UInt16 MsgCount=0, 
UInt32 App=0, 
UInt32 Port=55555, 
UInt32 Token=0 

die chrome.udp.send braucht eine Arraybuffer zu bekommen. , was ich in meinem Code habe, ist dies:

var arrayBuffer = new ArrayBuffer(20); 
var dv = new DataView(arrayBuffer,0); 
dv.setUint16(0,0); 
dv.setUint16(2,20); 
dv.setUint16(4,0); 
dv.setUint16(6,0); 
dv.setUint32(8,0); 
dv.setUint32(12,55555); 
dv.setUint32(16,0); 

aber wenn ich

console.log(arrayBuffer); 

i

ArrayBuffer {} 

erhalten, ist es leer.

Wie kann ich eine c-ähnliche Struktur wie diese korrekt senden?

Danke!

Antwort

0

ArrayBuffer speichert Bytes - beliebige Bytewerte überhaupt.

console.log() erwartet von Menschen lesbare ASCII-Zeichenfolgen, damit sie angezeigt werden können.

Leider Protokollierung ein ArrayBuffer hilft nicht - sobald es eine ASCII NUL-Zeichen (und Ihre Daten hat man in der ersten Byte) die Zeichenfolge stoppt. Sie müssen eine andere Funktion schreiben, um eine ArrayBuffer zu akzeptieren und ein Hex string zu erzeugen, das Sie an console.log()

+0

Dank für den Kommentar weitergeben können, ich tat es so: console.log (dv.getUint16 (0)); Konsole.log (dv.getUint16 (2)); console.log (dv.getUint16 (4)); Konsole.log (dv.getUint16 (6)); console.log (dv.getUint32 (8)); console.log (dv.getUint32 (12)); Konsole.log (dv.getUint32 (16)); – user2199630