python2 与 python3 中 struct 模块的问题

2020-09-03 16:54:12 +08:00
 taomujian

import struct test = 18446735964955840608 result = struct.pack('<Q', test) print(result)

上面这段代码用 python2 和 python3 执行结果不一样,python2 执行的结果是字符串,python3 执行的结果是字节码,怎么把 python3 执行结果转换成字符串,简单的进行 str 转换,程序会报错....

在线等各位大佬们指点

1719 次点击
所在节点    Python
4 条回复
todd7zhang
2020-09-03 17:05:14 +08:00
struct.pack 出来的本来就应该是字节码,还想要替换什么,直接说你的初始需求呢
linw1995
2020-09-03 18:53:24 +08:00
py2 与 py3 最大的不同就是 py3 以 unicode 作为默认的字符串类型。这样在 py2 中字符串在 py3 中相当于 bytes 即 b"...",而 py3 中的字符串就相当于 py2 的 unicode 字符串即 u"..."。所以 py2 的运行结果与 py3 的相同,并不是楼主说的那样,运行结果不同。
taomujian
2020-09-03 19:12:00 +08:00
我需要把一个脚本从 py2 改成 py3,我用 wireshark 抓包后发现发送的数据包中有一段字符是 b''开头的字符串,所以想把 b''开头的给换成字符串,刚才我换了下思路发送的数据都换成 bytes 就好了,感谢 2 位的回复
ruanimal
2020-09-04 09:42:31 +08:00
@taomujian 骚年,去了解下字符串编码和 unicode 吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/703939

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX