2015-02-05 62 views
1

我需要計算網絡掩碼給定一個子網中的塊的開始和結束IP地址,在JavaScript中。我利用這個答案https://stackoverflow.com/a/8872819/664479導出網絡掩碼給定起始和結束IP地址

隨着ac164980一個startAddress和endAddress的ac16498e

var scope = ipScope; 
var s = parseInt("0x"+startAddress ,16); 
var e = parseInt("0x"+endAddress ,16); 
var m = parseInt("0xFFFFFFFF",16); 

var nm = ""+(m^s^e); 

我預計FFFFFFC0但得到-15

我哪兒去了?

+0

首先,你沒有在最後把你的整數轉換回十六進制。 – 2015-02-05 19:32:41

回答

0

這裏實際存在2個問題。首先是使用startIP和endIP的計算假設。

它確實應該是startIP和endIP所在子網的scopeSize

第二個是返回負值的表示形式。這是固定的:

var nm = (0xFFFFFFFF + (-1 ^(scope-1)) +1).toString(16).toUpperCase(); 
0

您需要將結果轉換回十六進制字符串末(摘自decimalToHexString功能:https://stackoverflow.com/a/697841/932282):

function decimalToHexString(number) 
{ 
    if (number < 0) 
    { 
     number = 0x100000000 + number; 
    } 
    return number.toString(16).toUpperCase(); 
} 

var startAddress = "ac164980", 
    endAddress = "ac16498e"; 

var s = parseInt("0x"+startAddress, 16); 
var e = parseInt("0x"+endAddress, 16); 
var m = parseInt("0xFFFFFFFF", 16); 

var nm = decimalToHexString(m^s^e); 

結果是FFFFFFF1但是。

相關問題