Python 处理二进制的问题

2019-05-14 11:56:22 +08:00
 moxiaowei
str = b"111111111111111"
m = str[0]
print(m)
上面的代码为啥,得到的结果是 49 呢?我一直想不通,[0]应该取的是一个 byte ( 8bit ),即 b"11111111"才对啊!
为啥是 49 呢?求教各位大侠!!
2017 次点击
所在节点    Python
8 条回复
trys1
2019-05-14 12:09:30 +08:00
b"111" 并不是二进制,而是字符串"111",
而“ 1 ”的 ascii 码正是 49
moxiaowei
2019-05-14 12:15:50 +08:00
@trys1 如果是二进制,那么[0]应该取的是一个 byte ( 8bit )这个应该没错吧?
FYFX
2019-05-14 12:18:58 +08:00
shuax
2019-05-14 12:44:14 +08:00
b 是 byte 不是 bit,取一个 b 就是一个 byte。
ssrfox
2019-05-14 12:54:31 +08:00
你想象中的样子应该是 str = b'\xff\xff'
然后 print 结果是 255
xpresslink
2019-05-14 14:39:07 +08:00
楼主的基本知识是咋学地?
0b111111111111111
才是二进制数
moxiaowei
2019-05-14 15:08:29 +08:00
@xpresslink 对二进制这块学的真的少
inhzus
2019-05-14 15:10:21 +08:00
推荐 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