如何将5号数字转换为4字节的字符串,如果要手动输入,则类似于此类似的字符串。将数字转换为4字节的字符串
var size = "\00\00\00\05";
数是分组我需要通过套接字和前4个字节的数据包要发送的大小需要是包的大小(无明显计数的前4个字节)。
var size = "\00\00\00\05";
var packet = size + "JSON_STRING";
让我知道如果我没有正确解释自己我从来没有使用过node.js,但我得到了它的挂钩。
如何将5号数字转换为4字节的字符串,如果要手动输入,则类似于此类似的字符串。将数字转换为4字节的字符串
var size = "\00\00\00\05";
数是分组我需要通过套接字和前4个字节的数据包要发送的大小需要是包的大小(无明显计数的前4个字节)。
var size = "\00\00\00\05";
var packet = size + "JSON_STRING";
让我知道如果我没有正确解释自己我从来没有使用过node.js,但我得到了它的挂钩。
使用节点的Buffer
而不是一个字符串。字符串用于字符,缓冲区用于字节:
var size = 5;
var sizeBytes = new Buffer(4);
sizeBytes.writeUInt32LE(size, 0);
console.log(sizeBytes);
// <Buffer 05 00 00 00>
一个明显的变化是:
var size = 5;
var b1 = size & 0xff;
var b2 = (size>>>8) & 0xff;
var b3 = (size>>>16) & 0xff;
var b4 = (size>>>24) & 0xff;
var sizeString = String.fromCharCode(b1, b2, b3, b4);
非常重要的注意 - 这取决于B1-B4的结构顺序可能是不同的,它被称为Endianness,可能你需要b4, b3, b2, b1
你可以用做JavaScript Typed arrays,这允许实际的字节级别控制,而不是使用字符串内的字符...
创建ArrayBuffer
var ab = new ArrayBuffer(4);
使用数据视图来写整进去
var dv = new DataView(ab);
dv.setInt32(0, 0x1234, false); // <== false = big endian
现在你可以让你的ArrayBuffer作为一个无符号字节数组
var unit8 = new Uint8Array(ab);
输出
console.log(unit8);
[0, 0, 18, 52]
您应该使用'Buffer'而不是字符串。 – SLaks 2015-02-10 22:01:29
感谢您的回答我遇到了应该发送TCP数据包的脚本文件的问题,明天我可能会再次回复您,以了解哪种方法更好。 – Starfox64 2015-02-10 23:04:26