将32位二进制数转换为4个单独的8位部分的功能

时间:2019-03-14 00:43:29

标签: python python-3.x

Python中是否有内置函数将32位二进制数拆分为4个单独的8位二进制数?我正在尝试将二进制IP地址转换为点分十进制格式,并试图将数字分割开来,似乎有些无所适从。

示例:

转到此:10000000111111110000001100001111

输入:10000000 11111111 00000011 00001111

这样我就可以从那里转换为十进制了。谢谢!

edit:我已经能够将字符串分成四个部分,但是现在我试图将每个二进制字符串值转换为十进制数。我有办法定义每个新的字符串部分,以便可以在它们上使用int函数吗?

2 个答案:

答案 0 :(得分:0)

list(map(lambda s: int(s, base=2), [x[k:k + 8] for k in range(0, 32, 8)]))

答案 1 :(得分:0)

要解决将您的字符串分成4个部分的问题,我首先使用带有一些字符串拼接的列表理解。 binary_string =“ 10000000111111110000001100001111”

data = [binary_string[:8], binary_string[8:16], binary_string[16:24], binary_string[24:32]]

一种更简洁的编写方式是使用列表理解,并在字符串上加8。:

data = [binary_string[i:i+8] for i in range(0,32,8)]

要回答将其转换为数字的第二个问题,您可以使用int函数将其强制转换。

data = [int(num) for num in data]

请注意,此 可能是单向函数,因为如果您的数字以0开头,则它们将被删除。因此,要将它们转换回长度为8的字符串,可以使用zfill函数:

data = [str(num).zfill(8) for num in data]