【发布时间】:2015-06-15 22:37:06
【问题描述】:
假设我有一个var testIP = '93.174.93.145';
我正在执行以下方法:
function ipToBin(ip) {
var block = ip.split('.');
var res = 0;
res += block[0] << 24;
res += block[1] << 16;
res += block[2] << 8;
res += block[3] << 0;
bin = res.toString(2);
console.log('\n to bin: ', bin);
console.log(bin.length);
return bin;
}
function binToIP(bin) {
var block1 = (bin.split(0, 8));
block1 = parseInt(block1, 2);
block1 = (block1 >> 0) & 255;
var block2 = bin.split(9, 8);
block2 = parseInt(block2, 2);
block2 = (block2 >> 8) & 255;
var block3 = bin.split(17, 8);
block3 = parseInt(block3, 2);
block3 = (block3 >> 16) & 255;
var block4 = bin.split(25, 8);
block4 = parseInt(block4, 2);
block4 = (block4 >> 24) & 255;
console.log((block4 + '.' + block3 + '.' + block2 + '.' + block1).toString());
}
现在问题是二进制字符串的长度只有 31,当转换回 IP 时,它返回93.174.93.1。这类似于this post 吗?或者我面临的问题究竟出在哪里?
【问题讨论】:
标签: javascript ip bit-manipulation bit