将数字转换为4字节的string

如何将数字5转换为4字节的string,如果要手动input,就会像这样。

var size = "\00\00\00\05"; 

该数字是我需要通过套接字发送的数据包的大小,数据包的前4个字节需要是数据包的大小(显然不计算前4个字节)。

 var size = "\00\00\00\05"; var packet = size + "JSON_STRING"; 

让我知道如果我没有正确解释自己我从来没有使用过node.js,但我得到了它的挂钩。

使用节点的Buffer而不是string。 string是字符,缓冲区是字节:

 var size = 5; var sizeBytes = new Buffer(4); sizeBytes.writeUInt32LE(size, 0); console.log(sizeBytes); // <Buffer 05 00 00 00> 

您可以使用JavaScript Typed数组来执行此操作,这允许实际的字节级别控制,而不是使用string内的字符…

创build一个ArrayBuffer

 var ab = new ArrayBuffer(4); 

使用DataView向其中写入一个整数

 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] 

一个明显的变体是:

 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