我已经下载了csv格式的ip2location数据库,读取了第1列数据,并按照ip2location FAQ中的建议,使用下面的代码将IP号转换成IP地址。
样本CSV数据:

function Convert-NumbetToIP
{
param(
[Parameter(Mandatory=$true)][string]$number
)
try
{
$w = [int]($number/16777216)%256
$x = [int]($number/65536)%256
$y = [int]($number/256)%256
$z = [int]$number%256
$ipAddress = "$w.$x.$y.$z"
Write-Host "Actual IP Address - $ipAddress"
Write-Host "Returning IP Address"
return $ipAddress
}
catch
{
throw $_
}
}
Convert-NumbetToIP -number 2147483648但是不能将值"2147483648“转换为键入"System.Int32”。错误:“对于Int32来说,值要么太大要么太小。”。
谁能帮我得到正确的IP地址,也请让我知道什么类型的数据是在第二栏。
发布于 2022-11-24 16:54:05
我通过将int改为int64找到了答案
function Convert-NumbetToIP
{
param(
[Parameter(Mandatory=$true)][string]$number
)
try
{
$w = [int64]($number/16777216)%256
$x = [int64]($number/65536)%256
$y = [int64]($number/256)%256
$z = [int64]$number%256
$ipAddress = "$w.$x.$y.$z"
Write-Host "Actual IP Address - $ipAddress"
Write-Host "Returning IP Address"
return $ipAddress
}
catch
{
throw $_
}
}
Convert-NumbetToIP -number 2147483648https://stackoverflow.com/questions/74546895
复制相似问题