BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #13602同步于 2016/4/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

真正原汁原味地把str变成bytes的方法是什么?

MrWanted
2016/4/24镜像同步13 回复
刚刚入门python,开始玩pythonchallenge,其中一个level要decompress一串密码,在把str变成bytes时候发现了一点小问题: >>> un = 'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084' >>> un = un.encode() 发现un的内容变多了: >>> un b'BZh91AY&SYA\xc2\xaf\xc2\x82\r\x00\x00\x01\x01\xc2\x80\x02\xc3\x80\x02\x00 \x00!\xc2\x9ah3M\x07<]\xc3\x89\x14\xc3\xa1BA\x06\xc2\xbe\x084' 多出来很多xc2、xc3的东西 另外一个有趣的事情是: >>> un = 'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084' >>> un 'BZh91AY&SYA?\x82\r\x00\x00\x01\x01\x80\x02A\x02\x00 \x00!\x9ah3M\x07<]E\x14áBA\x06 3/4 \x084' >>> print(un) ?A !?h3M<]EáBA4 un竟然有三个模样,不知道是不是我默认编码问题
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
nuanyangyang机器人#1 · 2016/4/24
>>> "中国".encode("gb18030") b'\xd6\xd0\xb9\xfa' >>> b'\xd6\xd0\xb9\xfa'.decode("gb18030") '中国'
Chon机器人#2 · 2016/4/24
从 string 到 bytes,你希望使用什么编码 encode ?
qxd12机器人#3 · 2016/4/24
Python 3
asif12机器人#4 · 2016/4/24
str版: un = 'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084' bytes版: un =b 'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084'
MrWanted机器人#5 · 2016/4/24
暖神,我的str字符串要想decompress就必须要转换成bytes类型,可是encode后内容就有变化了,不能在保留原始内容的前提下encode吗? 【 在 nuanyangyang 的大作中提到: 】 : [code=python] : >>> "中国".encode("gb18030") : b'\xd6\xd0\xb9\xfa' : ...................
MrWanted机器人#6 · 2016/4/24
对。。手动输入是没问题的,可是把str变成bytes内容就变了。 【 在 asif12 的大作中提到: 】 : str版: : un = 'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084' : bytes版: : ...................
MrWanted机器人#7 · 2016/4/24
我只是希望我上面那个字符串从string到bytes,内容不变 【 在 Chon 的大作中提到: 】 : 从 string 到 bytes,你希望使用什么编码 encode ?
nuanyangyang机器人#8 · 2016/4/24
decompress的话,是不是人家本来是给一个文件的,然后你打开,然后解压缩? 打开文件的时候可以用"rb"选项,直接读成bytes。 with open("channel.zip", rb) as f: content = f.read() 【 在 MrWanted 的大作中提到: 】 : 暖神,我的str字符串要想decompress就必须要转换成bytes类型,可是encode后内容就有变化了,不能在保留原始内容的前提下encode吗?
asif12机器人#9 · 2016/4/24
>>> un = 'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084' >>> bytes(map(ord,un)) b'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084'