我正在使用 node.js 构建一个 tcp 服务器,我想从接收到的数据中提取整数。

var net = require('net');
var server = net.createServer(function (socket) {
  socket.setEncoding('ascii');
  socket.addListener("data", function (data) {
    var pkgDataContent = data.substr(0, 2);
  });
});
server.listen(1337, "192.168.80.91");

接收到的数据为字符串类型,数字为1字节、2字节和4字节。如何从 javascript 字符串中提取这些 1 字节、2 字节和 4 字节整数?就像上面的代码: pkgDataContent 是一个2字节的字符串,但实际上它是一个整数,如何正确地将其转换为javascript数字?

最佳答案

取决于字节顺序以及它是否已签名。

大端 32 位无符号整数:

pkgDataContent.charCodeAt(0) << (8*3) +
pkgDataContent.charCodeAt(1) << (8*2) +
pkgDataContent.charCodeAt(2) << (8*1) +
pkgDataContent.charCodeAt(3) << (8*0)

小端 32 位无符号整数:
pkgDataContent.charCodeAt(3) << (8*0) +
pkgDataContent.charCodeAt(2) << (8*1) +
pkgDataContent.charCodeAt(1) << (8*2) +
pkgDataContent.charCodeAt(0) << (8*3)

关于javascript - 从 tcp 流中提取整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6038995/

10-14 19:42