【问题标题】:send c-like struct as arrayBuffer via udp chrome socket通过 udp chrome 套接字将类似 c 的结构作为 arrayBuffer 发送
【发布时间】:2016-10-12 21:48:21
【问题描述】:

我正在使用 chrome.sockets 发送 udp 消息。 我需要发送这个类似 c 的结构:

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 结构?

谢谢!

【问题讨论】:

    标签: google-chrome ionic-framework websocket udp arraybuffer


    【解决方案1】:

    ArrayBuffer 存储字节 - 任何字节值。

    console.log() 需要人类可读的 ASCII 字符串,以便它可以显示它们。

    不幸的是,记录 ArrayBuffer 并没有帮助 - 只要有一个 ASCII NUL 字符(并且您的数据在 第一个字节中有一个),字符串就会停止。您需要编写一个不同的函数来接受ArrayBuffer 并生成一个十六进制string,您可以将其传递给console.log()

    【讨论】:

    • 感谢您的评论,我是这样做的:console.log(dv.getUint16(0));控制台.log(dv.getUint16(2));控制台.log(dv.getUint16(4));控制台.log(dv.getUint16(6));控制台.log(dv.getUint32(8));控制台.log(dv.getUint32(12)); console.log(dv.getUint32(16));
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 2016-01-11
    • 1970-01-01
    • 2017-04-24
    • 2011-11-27
    • 2010-11-22
    相关资源
    最近更新 更多