我想将从十进制格式的文件(192.168.65.72)读取的IP地址转换为二进制格式的文件{110000001010100001000001010001000}。我正在从文件中读取十进制格式的IP地址。找到代码片段下方。
/*contains 192.168.65.72*/
filter = open("filter.txt", "r")
for line in filter:
bytePattern = "([01]?\d\d?|2[0-4]\d|25[0-5])"
regObj = re.compile("\.".join([bytePattern]*4))
for match in regObj.finditer(line):
m1,m2,m3,m4 = match.groups()
print "%s %s %s %s" %(m1, m2, m3, m4)
我想将m1,m2,m3和m4转换为8位二进制值。我无法想出办法。我是python的新手。非常感谢任何帮助。
干杯。
答案 0 :(得分:4)
''.join([ bin(int(x))[2:].rjust(8,'0') for x in '123.123.123.123'.split('.')])
答案 1 :(得分:4)
将IPv4地址从点分四字符串格式(例如,'123.45.67.89')转换为32位压缩二进制格式:
socket.inet_aton
("192.168.65.72")
答案 2 :(得分:2)
如果需要包含32位IP地址的原始数据的字符串:
import struct
struct.pack('4B', *(int(x) for x in '123.123.123.123'.split('.')))
或者如果你想要一个包含IP地址的32位整数:
import struct
struct.unpack('>I', struct.pack('4B', *(int(x) for x in '123.123.123.123'.split('.'))))
答案 3 :(得分:1)
>>> bin( 192 )
'0b11000000'
字符串操作完成其余的工作。但请注意,在IP中,只允许第一部分为零。
答案 4 :(得分:0)
如果您将文件读入 DataFrame,则可以使用库 DataPrep 中的函数 function csv {
$Path = read-host "Where is the CSV stored? Make sure it is in a Readable Location"
# Here is where The user would be prompted for the path of the CSV
$Users = Import-Csv -Path $Path
foreach ($User in $Users)
{
$Displayname = $User.'Firstname' + " " + $User.'Lastname'
$UserFirstname = $User.'Firstname'
$UserLastname = $User.'Lastname'
$OU = $User.'OU'
$SAM = $User.'SAM'
$UPN = $User.'Firstname' + "." + $User.'Lastname' + "@" + $User.'Maildomain'
$Description = $User.'Description'
$Password = $User.'Password'
New-ADUser -Name "$Displayname" -DisplayName "$Displayname" -SamAccountName $SAM -UserPrincipalName $UPN -GivenName "$UserFirstname" -Surname "$UserLastname" -Description "$Description" -AccountPassword (ConvertTo-SecureString $Password -AsPlainText -Force) -Enabled $true -Path "$OU" -ChangePasswordAtLogon $false –PasswordNeverExpires $true
}
}
。使用 clean_ip()
安装 DataPrep。
pip install dataprep