我正在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?
我正在制作一个应用程序,我想向用户显示一系列 base64 编码图片。它们通过使用 data-url 显示。如果用户想要保存图片,只需右键单击并另存为(或将其拖到文件夹中)。
有没有办法控制建议的文件名?现在 Chrome 只是建议“下载”,甚至无法将其识别为图像。这可以以任何方式完成吗?
我只需要它在 Chrome 中工作。
谢谢你的帮助
我正在写一些画布代码来绘制一个圆圈,但它从未被绘制过.最后我发现这是因为我打字Math.Pi而不是Math.PI.
在Chrome浏览器开发工具,我可以看到Math.Pi是undefined,但它永远不会抛出任何异常.这是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");.
我正在尝试使用 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 ×4
azure ×1
base64 ×1
download ×1
filenames ×1
html5-canvas ×1
image ×1
node.js ×1
websocket ×1