2017-10-06 45 views
1

我有以下Python代码,其中一个二进制字符串转换为纯文本:试图了解二进制转换脚本

import bin ascii 
n = int('01100001011000100110001101100100', 2) 
binascii.unhexlify('%x' % n) 

该代码可以正常运行,但我不明白是怎么回事。

  1. int声明结尾的“2”的用途是什么?
  2. “'%x'%n”参数的用途是什么?
+0

第一个从字符串中创建一个整数,'2'将该字符串标记为基数2中的整数表示。 – alfasin

回答

1

在int声明结束时2的用途是什么?

According to the documentationint可以采取第二个参数:第一个参数的基础。

'%x' % n是什么意思?

%x字符串indicates that an item will be formatted to hexadecimal带小写字母。 '%x' % n。它与内建的hex函数类似,只是它没有字符串中的前导0x。等效的表达式将是format(n, 'x')

+0

注意:这只是巧合。如果'int'值并不需要偶数个十六进制字符来表示,'binascii.unhexlify'会有barfed(它不会尝试任何一端的零填充)。在Python 3中,即使'int'格式化为奇数长度的十六进制,没有'binascii',通过将'unhexlify'行替换为:'n.to_bytes((n.bit_length()+ 7)// 8,'big')'(直接从'int'转换为'bytes',根本不产生中间的'str',避免完全依赖十六进制表示) – ShadowRanger