2013-11-25 26 views
1

我正在尝试一个例子几乎直接从Python库参考的功能“a2b_base64()”,它是“binascii”模块的一部分版本2.5.2文档。我试图将一个十六进制数字转换为它的二进制值。最终我需要将整个十六进制文件转换为二进制文件。导入binascii Python 2.5.2

该函数技术上是一个字符串,但我得到的错误说“NameError:name'a2b_base64'未定义”。任何想法为什么这会失败?我希望我可以使用更现代的Python版本,并避免使用a2b_base64()函数,但不能。谢谢。

import binascii 
num = a2b_base64("04") 
print num 

回答

1

在Python中,每个模块都有自己的命名空间。默认情况下,你需要在调用该模块中的方法时,包括模块名称:

import binascii 
num = binascii.a2b_base64("04") 
print num 

注意a2b_base64转换一串Base64编码的二进制数据转换成其原始二进制形式,这听起来像它不是你其实想要。以十六进制数字字符串转换为十六进制数据串,使用a2b_hex

>>> import binascii 
>>> binascii.a2b_hex("04") 
'\x04' 
+0

感谢module.method指出。这两个例子都会给我们带来意想不到的结果最后返回一个菱形字符,第一个给出了“不正确的填充错误”。我尝试添加一些前导零。三点时,我终于没有错误,但返回的结果是一个带有下标“m8”的“u”。 – user2994541

+0

'a2b_base64'函数与将十六进制转换为二进制文件无关。我几乎肯定这不会帮助你做任何你想做的事情。如果你想读取一个十六进制字符串并获得它所表示的整数,使用'int'函数:例如'int(“1A”,16)'。 –

+0

感谢您的洞察力和患者的新手问题。有一些现成的命令或函数将int转换为二进制吗?对于我坚持使用的旧版本2.5.2,看起来似乎没有什么支持。 – user2994541