[英]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.