请选择 进入手机版|继续访问电脑版
发新帖

请教 Python 二进制转 10 进制

[复制链接]
10548 32

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
因为原创数据是感应器输出的,   00110101, 这样的东西,然后问题是  用  int ("00110101",2 ) 是可以得到 53 的,但是 用这个转吗方法需要 string 格式,但是 只要 string  就会 把 01 开头的默认为 8 进制。 那么要怎么样才能愉快的转成 10 进制 ?

举报 使用道具

回复

精彩评论32

cooky  注册会员  发表于 2017-10-4 22:01:28 | 显示全部楼层
自问自答系列

举报 使用道具

回复
ericbize  新手上路  发表于 2017-10-5 00:37:54 | 显示全部楼层
@Cooky  没有 ,a = 00110101 , print str(a) 得到的是  36929   ,  我不知道怎么解决这个问题

举报 使用道具

回复
wwqgtxx  新手上路  发表于 2017-10-5 01:04:56 | 显示全部楼层
a = 0b00110101

举报 使用道具

回复
pright  新手上路  发表于 2017-10-5 02:29:30 | 显示全部楼层
oct2dec = lambda x: (((x>>21)&0x7)<<7)|(((x>>18)&0x7)<<6)|(((x>>15)&0x7)<<5)|(((x>>12)&0x7)<<4)|(((x>>9)&0x7)<<3)|(((x>>6)&0x7)<<2)|(((x>>3)&0x7)<<1)|(x&0x7)

a=00110101
print oct2dec(a)

举报 使用道具

回复
ericbize  新手上路  发表于 2017-10-5 03:45:25 | 显示全部楼层
@wwqgtxx 在数组加入 0b 的时候已经强行转了~~~

举报 使用道具

回复
ericbize  新手上路  发表于 2017-10-5 08:57:39 | 显示全部楼层
@pright 谢谢你

举报 使用道具

回复
oaix  新手上路  发表于 2017-10-5 09:51:14 | 显示全部楼层
你是不是要实现这个效果
```
>>> int(oct(00110101), 2)
53
```

举报 使用道具

回复
oaix  新手上路  发表于 2017-10-5 09:58:51 | 显示全部楼层
感觉你的需求有点搞笑, 最初的那个八进制数字是怎么来的? eval 吗

举报 使用道具

回复
ericbize  新手上路  发表于 2017-10-5 10:59:55 | 显示全部楼层
@oaix https://akizukidenshi.com/download/ds/aosong/DHT11.pdf   这个是说明, 就是一个 sensor 输出的数据。 其实网上是有其他计算方法的,但是我不想用,毕竟要查重,而且我答应过老师我自己写 code 不回 copy

举报 使用道具

回复
ltux  注册会员  发表于 2017-10-5 18:17:44 | 显示全部楼层
你的传感器输出二进制串 00110101 结果居然不是字符串也不是其二进制结果的整数,而是把这个二进制串按八进制理解得到的整数??? 233333 接口驱动谁写的,去打死他

举报 使用道具

回复
ltux  注册会员  发表于 2017-10-6 03:10:00 | 显示全部楼层
我觉得你传感器的输出简直不可思议……你说了半天都没说明白 python 接收到的到底是啥,是个 01 数组?字符串?整数?

举报 使用道具

回复
ltux  注册会员  发表于 2017-10-6 03:11:16 | 显示全部楼层
“这样的东西”是个啥呦……进制转换简直不算个问题,没学过编程的教一遍也能学会,但你得先把接收到的数据格式描述清楚喽

举报 使用道具

回复
ltux  注册会员  发表于 2017-10-6 04:20:46 | 显示全部楼层
如果 a 是个整数,a=0o00110101,则 int('%o'%(a),2) 即所求
如果 a 是个 01 数组,a=[0,0,1,1,0,1,0,1],则 int(''.join(map(str,a)),2) 即所求

举报 使用道具

回复
msg7086  新手上路  发表于 2017-10-6 05:48:10 | 显示全部楼层
你还是先说清楚到底是个什么东西吧。

数字本来就没有二进制和十进制之分,数字就是数字。只有字符串才是某种进制的表达。不是字符串当然就不需要也不能转换了。

举报 使用道具

回复
onlyice  新手上路  发表于 2017-10-6 16:56:21 | 显示全部楼层
@ericbize 我感觉这种 level 的代码,抄不抄都无所谓的

比如你要开个平方根,有一些快速开平方根的代码已经实现好了,你难道自己再写一个?

另外,同样不理解问题是什么。。如果只是 Python 层面的代码,Google 一下 "python convert binary to decimal"

举报 使用道具

回复
xivn1987  新手上路  发表于 2017-10-6 18:14:00 | 显示全部楼层
感觉传感器发过来的就是字节串吧,,那一串 0 和 1 本来就是一个个 char,所以应该先构造字节串,然后用 int('001101', 2)转成数字,,至于怎么构造字节串:
s=''
每来一个字节 ch,执行
s += chr(ch)
最后
i = int(s, 2)

举报 使用道具

回复
ericbize  新手上路  发表于 2017-10-6 18:22:56 | 显示全部楼层
@ltux 传感器输出的就是高低电压(第四页) 连接看 #9

举报 使用道具

回复
ericbize  新手上路  发表于 2017-10-7 06:17:11 | 显示全部楼层
@msg7086 emmmm  我自己都乱了,表达不好

举报 使用道具

回复
ericbize  新手上路  发表于 2017-10-7 11:37:12 | 显示全部楼层
@onlyice 关键是有 turnitin 查重啊~~~

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表