Python 处理二进制的问题

2019 年 5 月 14 日
 moxiaowei
str = b"111111111111111"
m = str[0]
print(m)
上面的代码为啥,得到的结果是 49 呢?我一直想不通,[0]应该取的是一个 byte ( 8bit ),即 b"11111111"才对啊!
为啥是 49 呢?求教各位大侠!!
2710 次点击
所在节点    Python
8 条回复
trys1
2019 年 5 月 14 日
b"111" 并不是二进制,而是字符串"111",
而“ 1 ”的 ascii 码正是 49
moxiaowei
2019 年 5 月 14 日
@trys1 如果是二进制,那么[0]应该取的是一个 byte ( 8bit )这个应该没错吧?
FYFX
2019 年 5 月 14 日
momo1999
2019 年 5 月 14 日
b 是 byte 不是 bit,取一个 b 就是一个 byte。
ssrfox
2019 年 5 月 14 日
你想象中的样子应该是 str = b'\xff\xff'
然后 print 结果是 255
xpresslink
2019 年 5 月 14 日
楼主的基本知识是咋学地?
0b111111111111111
才是二进制数
moxiaowei
2019 年 5 月 14 日
@xpresslink 对二进制这块学的真的少
inhzus
2019 年 5 月 14 日
推荐 from bitstring import BitArray

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

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

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

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

© 2021 V2EX