将javascript中的数字转换为4字节数组

本文关键字:字节 字节数 数组 转换 javascript 数字 | 更新日期: 2023-09-27 18:20:34

我正在尝试编写一个节点服务器,在该服务器中,我需要向c#客户端发送一个32位整数(作为标头)。

我不太确定如何做到这一点,因为移位运算符让我感到困惑。我认为我的c#客户端希望这些整数采用小端格式(我不确定,我这么说是因为NetworkStream IsLittleEndian属性为true)。

假设我在javascript中有一个类似的变量

var packetToDeliverInBytes = GetByteArrayOfSomeData();
//get the integer we need to turn into 4 bytes
var sizeOfPacket = packetToDeliver.length;
//this is what I don't know how to do
var bytes = ConvertNumberTo4Bytes(sizeOfPacket)
//then somehow do an operation that combines these two byte arrays together
//(bytes and packetToDeliverInBytes in this example)
//so the resulting byte array would be (packetToLiver.length + 4) bytes in size
//then send the bytes away to the client
socket.write(myByteArray);

如何编写ConvertNumberTo4Bytes()函数?

奖金

如何将这两个字节数组组合成一个,以便在一个套接字中发送它们。write调用

将javascript中的数字转换为4字节数组

由于elclans的注释,在节点中使用Buffer对象似乎是可行的。

var buf = new Buffer(4 + sizeOfPacket);
buf.writeInt32LE(sizeOfPacket, 0);
buf.write(packetToDeliverInBytes, 4);
socket.write(buf);