|
gotocmd
新手上路
积分 19
发帖 20
注册 2008-7-3
状态 离线
|
|
2009-1-16 14:10 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
2 楼』:
第一为大于128计算出来数是负数=。=算法看懂就好
@echo on
for /f "delims=." %%a in ("223.255.255.255") do (
Call :GetDIP %%a %%b %%c %%d
)
pause
exit
:GetDIP
set /a dip=%1*256*256*256
set /a dip=%dip%+%2*256*256
set /a dip=%dip%+%3*256
set /a dip+=%4
echo %dip%
|
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore |
|
2009-1-16 14:36 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
3 楼』:
数字表示范围不知道CMD有简单的方法没。
下面是个VBS的:
IP = "223.255.255.255"
dip = Split(IP,".")
outip = dip(0) * 256 * 256 * 256
outip = outip + dip(1) * 256 * 256
outip = outip + dip(2) * 256
outip = outip + dip(3)
MsgBox outip
|
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore |
|
2009-1-16 14:39 |
|
|
gotocmd
新手上路
积分 19
发帖 20
注册 2008-7-3
状态 离线
|
『第
4 楼』:
谢谢slore兄,这只是对某一ip的转换,都怪我没说清楚
是这样的,我通过“ShowIp.exe"(纯真ip数据库工具)得到文本文件ip.txt,内容格式如下:
0.0.0.0 0.255.255.255 IANA CZ88.NET
1.0.0.0 1.51.255.255 IANA CZ88.NET
1.52.0.0 1.52.255.255 美国 CZ88.NET
1.53.0.0 1.153.255.255 IANA CZ88.NET
1.154.0.0 1.154.255.255 美国 CZ88.NET
1.155.0.0 1.255.255.255 IANA CZ88.NET
2.0.0.0 2.255.255.255 IANA CZ88.NET
3.0.0.0 3.255.255.255 美国 新泽西通用电气公司
4.0.0.0 4.9.255.255 美国 CZ88.NET
4.10.0.0 4.10.255.255 美国 新泽西州立大学
......
怎样得到文件ip_out.txt内容格式如同:
0 16777215 IANA CZ88.NET
16777216 33554431 IANA CZ88.NET
33554432 50331647 美国 CZ88.NET
........
|
|
2009-1-16 15:11 |
|
|
gotocmd
新手上路
积分 19
发帖 20
注册 2008-7-3
状态 离线
|
|
2009-1-17 12:54 |
|
|
netbenton
银牌会员
批处理编程迷
积分 1916
发帖 752
注册 2008-12-28 来自 广西
状态 离线
|
『第
6 楼』:
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1-8,* delims= . " %%a in ('type ip.txt') do (
Call :GetDIP %%a %%b %%c %%d one
Call :GetDIP %%e %%f %%g %%h tow
echo !one! !tow! %%i
)
pause
goto :eof
:GetDIP
set /a sur=%2*256*256+%3*256+%4
if %1 gtr 127 (
set/a fr=%1-128
set /a sur=!fr!*256*256*256+!sur!
set sur=000000000!sur!
set sur=!sur:~-10!
set /a su2=1!sur:~-8!-100000000+47483648
set su2=000000000!su2!
set su2=!su2:~-10!
set /a su1=1!sur:~0,-8!-100+21+!su2:~0,-8!
set "sur=!su1!!su2:~-8!"
) else (
set /a sur=%1*256*256*256+!sur!
)
set "%5=!sur!"
goto :eof
|
精简
[你的+我的+他的]=>[大家的] 个人网志 |
|
2009-1-20 14:43 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
7 楼』:
=.=
果然128以后很麻烦的说~
|
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore |
|
2009-1-20 14:51 |
|
|
netbenton
银牌会员
批处理编程迷
积分 1916
发帖 752
注册 2008-12-28 来自 广西
状态 离线
|
『第
8 楼』:
改进一下
改进排版,和精简了代码
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1-8,* delims= . " %%a in ('type ip.txt') do (
Call :GetDIP %%a %%b %%c %%d one
Call :GetDIP %%e %%f %%g %%h tow
if "!one:~4,1!"=="" set/p "= "<nul
echo !one! !tow! %%i
)
pause
goto :eof
:GetDIP
set /a sur=%2*256*256+%3*256+%4
if %1 gtr 127 (
set /a "sur=(%1-128)*256*256*256+!sur!"
set suw=000000000!sur:~-9!
set /a suw=1!suw:~-9!-1000000000+147483648
set /a sut=!sur:~0,-9!+!suw:~0,-9!+2
set "sur=!sut!!suw:~-9!"
) else (
set /a sur=%1*256*256*256+!sur!
)
set "%5=!sur!"
goto :eof
|
精简
[你的+我的+他的]=>[大家的] 个人网志 |
|
2009-1-21 14:02 |
|