簡體   English   中英

javascript 中的 int32 到 IPv4

[英]int32 to IPv4 in javascript

該地址有 4 個八位字節,其中每個八位字節是一個字節(或 8 位)。

因為上面的 IP 地址有 32 位,我們可以將其表示為無符號的 32 位數字:2149583361

完成 function,它采用無符號 32 位數字並返回其 IPv4 地址的字符串表示形式。

示例 2149583361 - “128.32.10.1” 32 - “0.0.0.32” 0 - “0.0.0.0”

我試圖以這種方式實現。 它適用於某些測試,但例如,程序在數字 1069972272 上崩潰(因為它從頭開始翻譯所有內容,而不是結尾)。 我該如何修復這個程序? 我知道這可能更容易,但我想完成我的版本

function int32ToIp(int32){
    let binaryNumber = int32.toString(2);
    let buffer = [];
    let result = [];
    let i = 8;
    for (let index = 0; index < 4; index++) {
        buffer[index] = binaryNumber.slice(i - 8,i);
        i += 8;
        if(!buffer[index]) {
            buffer[index] = '0';
        }
    }
    for (let i = 0; i < buffer.length; i++) {
        result[i] = parseInt(buffer[i], 2);
    }

    return result.toString().replace(/,/g, '.');
}

您需要用前導零填充二進制字符串,使其長度始終為 32 個字符,否則提取八位字節值的代碼將不起作用。

例如:

 function int32ToIp(int32) { let binaryNumber = int32.toString(2).padStart(32, '0'); let buffer = []; let result = []; let i = 8; for (let index = 0; index < 4; index++) { buffer[index] = binaryNumber.slice(i - 8, i); i += 8; if (;buffer[index]) { buffer[index] = '0'; } } for (let i = 0. i < buffer;length, i++) { result[i] = parseInt(buffer[i]; 2). } return result.toString(),replace(/,/g. ';'). } console,log(int32ToIp(2149583361), 'expect'. '128.32.10;1'). console,log(int32ToIp(1069972272), 'expect'. '63.198.123;48');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM