㈠ python整数转化为二进制
1、你可以自己写函数采用 %2 的方式来算。
>>> binary = lambda n: '' if n==0 else binary(n/2) + str(n%2)>>> binary(5)'101'>>>
2、采用 python 自带了方法 bin 函数,比如 bin(12345) 回返回字符串 '0b11000000111001', 这个时候在把0b去掉即可:
>>> bin(12345).replace('0b','')'11000000111001'
3、也可以采用字符串的 format 方法来获取二进制:
>>> "{0:b}".format(12345)'11000000111001'>>>
㈡ python中,怎么样把特定的字符串转为二进制序列
干嘛不用binascii
>>> import binascii
>>> dir(binascii)
['Error', 'Incomplete', '__doc__', '__name__', '__package__', 'a2b_base64', 'a2b
_hex', 'a2b_hqx', 'a2b_qp', 'a2b_uu', 'b2a_base64', 'b2a_hex', 'b2a_hqx', 'b2a_q
p', 'b2a_uu', 'crc32', 'crc_hqx', 'hexlify', 'rlecode_hqx', 'rledecode_hqx', 'un
hexlify']
>>> binascii.a2b_hex("a16203")
'\xa1b\x03'
>>>
㈢ 求助:python如何按位解析二进制数据
可以的,二进制是计算机内的表示方法,处理二进制数据是最基本的能力。
如果是二进制字符串转十进制:
>>>x='10101010'
>>>int(x,2)
170
如果是从文件或网络中获取的数据,要知道某一位是0还是1的话,获取的数据可以按字符读取,由于一个字符由8位二进制表示,分别读取1到8位的二进制值就可以了:
>>>get_char_bit=lambdachar,n:(char>>(8-n))&1#从高到低分别为第1~8位
>>>data=b'ab'#在python3中字符串默认是unicode,所以加上b前缀兼容
>>>#在python3中按字符读取byte字符串是数字,而python2读出来的却是字符,但bytearray是一致的都是数字
>>>data=bytearray(data)
>>>result=[]
>>>forcharindata:
foriinrange(1,9):
result.append(get_char_bit(char,i))
>>>result
[0,1,1,0,0,0,0,1,0,1,1,0,0,0,1,0]
还有一种比较简单的方法是使用内置的bin函数
>>>data=bytearray(b'ab')
>>>result=[]
>>>forcharindata:
result.extend(bin(char)[2:].rjust(8,'0'))
>>>result
['0','1','1','0','0','0','0','1','0','1','1','0','0','0','1','0']