Отправить c-like структуру как arrayBuffer через сокет udp chrome

Я использую chrome.sockets для отправки сообщений udp. мне нужно отправить эту c-like структуру:

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

chrome.udp.send должен получить arrayBuffer. что я сделал в своем коде это:

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);

но когда я

console.log(arrayBuffer);

я получил

ArrayBuffer {}

это пусто.

Как я могу правильно отправить c-like структуру?

Спасибо!

1 ответ

ArrayBuffer хранит байты - любые байтовые значения вообще.

console.log() ожидает читаемых человеком строк ASCII, чтобы он мог их отображать.

К сожалению, регистрация ArrayBuffer не помогает - как только появляется символ ASCII NUL (а ваши данные содержат его в самом первом байте), строка останавливается. Вам нужно будет написать другую функцию, чтобы принять ArrayBuffer и произвести Hex string что вы можете передать console.log()

Другие вопросы по тегам