小编JPu*_*uge的帖子

存储为int的IP地址会导致溢出?

我正在node.js中编写聊天服务器,我想将连接用户的IP地址存储在mysql数据库中作为(无符号)整数.我编写了一个javascript方法将ip-address转换为字符串为整数.然而,我得到一些奇怪的结果.

这是我的代码:

function ipToInt(ip) {
    var parts = ip.split(".");
    var res = 0;

    res += parseInt(parts[0], 10) << 24;
    res += parseInt(parts[1], 10) << 16;
    res += parseInt(parts[2], 10) << 8;
    res += parseInt(parts[3], 10);

    return res;
}
Run Code Online (Sandbox Code Playgroud)

当我运行调用方法时,ipToInt("192.168.2.44");我得到的结果是-1062731220.看起来好像发生了溢出,这很奇怪,因为预期的输出(3232236076)在javascript(2 ^ 52)的数字范围内.

当我-1062731220以二进制形式检查时,我可以看到它3232236076被保留了,但是充满了前导1.

我不确定,但我认为问题在于有符号和无符号整数.

你们任何人都可以解释发生了什么吗?并可能如何解析-1062731220回字符串IP?

javascript

19
推荐指数
3
解决办法
2万
查看次数

用户另存为时如何控制base64图像

我正在制作一个应用程序,我想向用户显示一系列 base64 编码图片。它们通过使用 data-url 显示。如果用户想要保存图片,只需右键单击并另存为(或将其拖到文件夹中)。

有没有办法控制建议的文件名?现在 Chrome 只是建议“下载”,甚至无法将其识别为图像。这可以以任何方式完成吗?

我只需要它在 Chrome 中工作。

谢谢你的帮助

javascript base64 filenames image download

5
推荐指数
1
解决办法
3999
查看次数

用Math.Pi计算不会抛出错误?

我正在写一些画布代码来绘制一个圆圈,但它从未被绘制过.最后我发现这是因为我打字Math.Pi而不是Math.PI.

在Chrome浏览器开发工具,我可以看到Math.Piundefined,但它永远不会抛出任何异常.这是Chrome中的错误还是在undefineds 上进行计算实际上是合法的?

这是我的代码:

ctx.save();
ctx.lineWidth = 2;
ctx.fillStyle = '#FF0000';
ctx.beginPath();
ctx.arc(can.x, can.y, 15, 0, Math.Pi * 2, true);
ctx.fill();
ctx.restore();
Run Code Online (Sandbox Code Playgroud)

ctx是指canvas.getContext("2d");.

javascript html5-canvas

3
推荐指数
1
解决办法
456
查看次数

Azure 上使用 Node.js 的 Websocket 服务器

我正在尝试使用 Node.js 创建一个在 Windows Azure 上运行的 websocket 服务器。这应该很简单,但我遇到了无法在任何地方找到解决方案的问题。

这是我的服务器端代码:

var ws = require('websocket.io')
    , http = require('http').createServer().listen(process.env.PORT)
    , server = ws.attach(http)

server.on('connection', function (socket) {
    socket.on('message', function () { });
    socket.on('close', function () { });
});
Run Code Online (Sandbox Code Playgroud)

我如何知道我需要连接到哪个端口?我的客户端代码是:

var ws = new WebSocket("ws://socketiopuge.azurewebsites.net");

ws.onopen = function () {
    alert("opened");
};

ws.onmessage = function(msg) {
    alert(msg);
};

ws.onclose = function () {
    alert("closed");
};
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我收到 501 错误代码,并且 onclode 事件被触发。我相信问题是我在创建 WebSocket 时需要指定端口号。你们中有人能指出我正确的方向吗?谢谢!

javascript azure websocket node.js

3
推荐指数
1
解决办法
2205
查看次数