python进制转换问题?

一直对python的进制转换比较模糊。。
求讲解一下python的进制转换。百度过 但是没找到字母怎么转
比如

hexstr='5555555595555A65556AA696AA6666666955'
s=''
for i in xrange(len(hexstr)/2):
    ch=hexstr[i*2:i*2+2]
    b=bin(int(ch,16))[2:]
    b='0'*(8-len(b))+b
    s+=b
print s

010101010101010101010101010101011001010101010101010110100110010101010101011010101010011010010110101010100110011001100110011001100110100101010101

网上找到软件输出
001101010011010100110101001101010011010100110101001101010011010100111001001101010011010100110101001101010100000100110110001101010011010100110101001101100100000101000001001101100011100100110110010000010100000100110110001101100011011000110110001101100011011000110110001110010011010100110101

看着都没错 但为什么有两种结果呢??

阅读 3.3k
3 个回答

哈哈,这就是典型的想的太多,读书太少。
数字之间的进制转化就是高中数学里的内容,0xA>>10>>0b1010。问题里面的例子应该是16转二进制吧,题主想用python实现但是想复杂了

>>>hexstr='5555555595555A65556AA696AA6666666955'
>>>bin(int(hexstr,16))
'0b10101010101010101010101010101011001010101010101010110100110010101010101011010101010011010010110101010100110011001100110011001100110100101010101'

直接就可以了。
你的想法不知道我理解的对不对:对于一个16进制的字符串,两两一组转化为八位的二进制字符串再拼接。但是不知道题主考虑到如果输入的字符串不是偶数的情况了吗,hexstr='5'是没有输出的,两两一组应该从低位开始,不应该从高位开始。
另外对于任意的字符转为计算机内存的二进制表示,思路就是枚举有限的字符用数字顺序来标识。ascii规定了字符和数字的对应关系(http://baike.baidu.com/view/1...,python提供了两个函数ord、chr查看其对应关系。

不明白什么叫字母转2进制,如果你指的是2进制存储的话直接申明个buff流进行写入操作。
如果是获取字符串的ascii码的话用encode转码

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题