标题: [文本处理] 数字格式ip转换格式的问题 [打印本页]
作者: netdzb 时间: 2021-2-1 11:58 标题: 数字格式ip转换格式的问题
数字格式的ip地址转换成带点的格式,
批处理可以做到吗?
作者: Batcher 时间: 2021-2-1 12:12
回复 1# netdzb
你需要先搞清楚转换逻辑才行,比如给定一个数字:
1111111111
先不要谈用哪种脚本,就让你先手工转换,你咋知道正确的IP应该是哪个?
作者: netdzb 时间: 2021-2-1 13:01
本帖最后由 netdzb 于 2021-2-1 13:07 编辑
回复 2# Batcher
转换逻辑是这样的,python的描述
print(96*256*256*256+23*256*256+122*256+178)
iptest = '96.23.122.178'
ip = iptest.split('.')
print(ip)
1612151474
['96', '23', '122', '178']
作者: Gin_Q 时间: 2021-2-1 13:06
本帖最后由 Gin_Q 于 2021-2-1 13:09 编辑
回复 3# netdzb
你这是字符串分割不是逻辑! 你要知道什么规则去分割,比如你说的按点。但是纯数字没有点。
作者: netdzb 时间: 2021-2-1 13:09
回复 4# Gin_Q
第一行就是转换逻辑啊。
分割后的列表能够倒序读入吗?因为乘以256的次数和游标需要调整的。
作者: went 时间: 2021-2-1 13:33
你的顺序应该是反的- @echo off & cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set "ip="
- set "num=1612151474"
- for /l %%i in (1,1,4) do (
- set /a "num1=num>>8<<8"
- set /a "num1=num-num1"
- set /a "num=num>>8"
- set "ip=!ip!.!num1!"
- )
- set "ip=!ip:~1!"
- echo !ip!
- pause&exit
复制代码
作者: netdzb 时间: 2021-2-1 13:46
回复 6# went
原来批处理也有移位操作的啊,学到了,谢谢。
作者: Gin_Q 时间: 2021-2-1 14:58
- def con(n):
- res = []
- res.append(str(n >> 24))
- res.append(str((n & 0x00FFFFFF) >> 16))
- res.append(str((n & 0x0000FFFF) >> 8))
- res.append(str(n & 0x000000FF))
- return '.'.join(res)
-
- print(con(96*256*256*256+23*256*256+122*256+178))
复制代码
作者: flashercs 时间: 2021-2-1 16:24
本帖最后由 flashercs 于 2021-2-1 16:25 编辑
- @echo off
- setlocal enabledelayedexpansion
- set "ip="
- :: ip=192.168.1.1
- set /a "num=-1062731519"
- set /a "num1=num"
- for /l %%A in (1,1,4) do (
- set /a "byte=num1&255"
- set "ip=!byte!.!ip!"
- set /a "num1>>=8"
- )
- set "ip=!ip:~,-1!"
- echo num=!num!
- echo ip=!ip!
- endlocal
- pause
- exit /b
复制代码
作者: netdzb 时间: 2021-2-2 07:51
回复 8# Gin_Q
python 3.8的新特性:=你用过吗?
ip_list = '192.168.0.1'.split('.')
base = 1
sum(int(x) * (base := base * 256) for x in reversed(ip_list)) // 256
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |