|  |      1Cooky      2017-09-29 12:18:05 +08:00 via Android 自问自答系列 | 
|  |      2ericbize OP @Cooky  没有 ,a = 00110101 , print str(a) 得到的是  36929   ,  我不知道怎么解决这个问题 | 
|  |      3wwqgtxx      2017-09-29 12:32:10 +08:00 a = 0b00110101 | 
|  |      4pright      2017-09-29 13:19:35 +08:00  1 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) | 
|  |      7oaix      2017-09-29 17:10:11 +08:00 你是不是要实现这个效果 ``` >>> int(oct(00110101), 2) 53 ``` | 
|  |      8oaix      2017-09-29 17:11:32 +08:00 感觉你的需求有点搞笑, 最初的那个八进制数字是怎么来的? eval 吗 | 
|  |      9ericbize OP @oaix https://akizukidenshi.com/download/ds/aosong/DHT11.pdf   这个是说明, 就是一个 sensor 输出的数据。 其实网上是有其他计算方法的,但是我不想用,毕竟要查重,而且我答应过老师我自己写 code 不回 copy | 
|  |      10ltux      2017-09-29 17:58:01 +08:00 via Android 你的传感器输出二进制串 00110101 结果居然不是字符串也不是其二进制结果的整数,而是把这个二进制串按八进制理解得到的整数??? 233333 接口驱动谁写的,去打死他 | 
|  |      11ltux      2017-09-29 18:12:11 +08:00 via Android 我觉得你传感器的输出简直不可思议……你说了半天都没说明白 python 接收到的到底是啥,是个 01 数组?字符串?整数? | 
|  |      12ltux      2017-09-29 18:15:48 +08:00 via Android  1 “这样的东西”是个啥呦……进制转换简直不算个问题,没学过编程的教一遍也能学会,但你得先把接收到的数据格式描述清楚喽 | 
|  |      13ltux      2017-09-29 18:25:55 +08:00 via Android  1 如果 a 是个整数,a=0o00110101,则 int('%o'%(a),2) 即所求 如果 a 是个 01 数组,a=[0,0,1,1,0,1,0,1],则 int(''.join(map(str,a)),2) 即所求 | 
|  |      14msg7086      2017-09-30 02:49:05 +08:00 你还是先说清楚到底是个什么东西吧。 数字本来就没有二进制和十进制之分,数字就是数字。只有字符串才是某种进制的表达。不是字符串当然就不需要也不能转换了。 | 
|  |      15onlyice      2017-09-30 10:21:37 +08:00 @ericbize 我感觉这种 level 的代码,抄不抄都无所谓的 比如你要开个平方根,有一些快速开平方根的代码已经实现好了,你难道自己再写一个? 另外,同样不理解问题是什么。。如果只是 Python 层面的代码,Google 一下 "python convert binary to decimal" | 
|  |      16XIVN1987      2017-09-30 11:23:17 +08:00 via Android 感觉传感器发过来的就是字节串吧,,那一串 0 和 1 本来就是一个个 char,所以应该先构造字节串,然后用 int('001101', 2)转成数字,,至于怎么构造字节串: s='' 每来一个字节 ch,执行 s += chr(ch) 最后 i = int(s, 2) | 
|  |      21XIVN1987      2017-09-30 12:29:34 +08:00 @ericbize  那也可以用我说的那种办法 s = '' for i in range(LEN): if SENSOR_PIN_LEVEL == 1: s += '1' else: s += '0' i = int(s, 2) | 
|  |      22XIVN1987      2017-09-30 12:32:51 +08:00 · s = '' for i in range(LEN): if SENSOR_PIN_LEVEL == 1: s += '1' else: s += '0' i = int(s, 2) · | 
|  |      23XIVN1987      2017-09-30 12:34:23 +08:00 ··· python s = '' for i in range(LEN): if SENSOR_PIN_LEVEL == 1: s += '1' else: s += '0' i = int(s, 2) ··· | 
|  |      24XIVN1987      2017-09-30 12:35:39 +08:00 v2ex 怎么贴代码才能保留空格缩进啊??? | 
|      26xierch      2017-09-30 20:58:24 +08:00 你要直接判断高低电压,一个 bit 一个 bit 地读么… 那你就读到 1 的时候,加一然后向左移一位( n += 1, n << 1 ); 读到 0 的时候,直接向左移一位( n << 1 )… |